Periodically I run the G++ testsuite with
--target_board=unix/-std=gnu++0x to catch any regressions relative to
C++98 mode. Here are the fixes from this round:
overflow.patch -- we were forgetting about overflow in some cases,
causing us to treat an expression as a constant expression when it
should not be.
build-non.patch -- the call to fold_non_dependent_expr was generating a
hard error on one testcase, so I've changed it to pass tf_none.
parse-const.patch -- returning error_mark_node in the case of a
non-constant expression was causing poorer diagnostics in some
testcases, and returning the expression after complaining doesn't seem
to break anything.
compound-lit.patch -- some places in the compiler expect a compound
literal to have TREE_HAS_CONSTRUCTOR set, but we weren't setting it
anymore. This patch fixes some ext/ testcases.
cx-testsuite.patch -- various adjustments to either update tests to
allow C++0x mode output or specify that they are only for C++98 mode.
Tested x86_64-pc-linux-gnu, applying to trunk.
commit e71736621b375d376091a50d17c0cbfb789e2536
Author: Jason Merrill <ja...@redhat.com>
Date: Thu Jun 9 13:59:04 2011 -0400
* semantics.c (maybe_constant_value): Handle overflowed input.
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index bf6486b..481318e 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -6902,7 +6902,8 @@ non_const_var_error (tree r)
else if (CP_TYPE_VOLATILE_P (type))
inform (DECL_SOURCE_LOCATION (r),
"%q#D is volatile", r);
- else if (!DECL_INITIAL (r))
+ else if (!DECL_INITIAL (r)
+ || !TREE_CONSTANT (DECL_INITIAL (r)))
inform (DECL_SOURCE_LOCATION (r),
"%qD was not initialized with a constant "
"expression", r);
@@ -7337,7 +7338,14 @@ maybe_constant_value (tree t)
|| type_unknown_p (t)
|| !potential_constant_expression (t)
|| value_dependent_expression_p (t))
- return t;
+ {
+ if (TREE_OVERFLOW_P (t))
+ {
+ t = build_nop (TREE_TYPE (t), t);
+ TREE_CONSTANT (t) = false;
+ }
+ return t;
+ }
r = cxx_eval_outermost_constant_expr (t, true);
#ifdef ENABLE_CHECKING
diff --git a/libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc b/libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
index 83f5ce1..8aa72f2 100644
--- a/libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
@@ -51,4 +51,5 @@ test04()
// { dg-error "required from here" "" { target *-*-* } 46 }
// { dg-error "denominator cannot be zero" "" { target *-*-* } 268 }
// { dg-error "out of range" "" { target *-*-* } 269 }
-// { dg-error "overflow in constant expression" "" { target *-*-* } 109 }
+// { dg-error "overflow in constant expression" "" { target *-*-* } 61 }
+// { dg-prune-output "not a member" }
commit fa869080e6f284376c4371644ae9077994eb771b
Author: Jason Merrill <ja...@redhat.com>
Date: Thu Jun 9 13:58:30 2011 -0400
* pt.c (build_non_dependent_expr): Use fold_non_dependent_expr_sfinae.
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 51d590e..ac150ce 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -19124,7 +19124,7 @@ build_non_dependent_expr (tree expr)
/* Try to get a constant value for all non-type-dependent expressions in
order to expose bugs in *_dependent_expression_p and constexpr. */
if (cxx_dialect >= cxx0x)
- maybe_constant_value (fold_non_dependent_expr (expr));
+ maybe_constant_value (fold_non_dependent_expr_sfinae (expr, tf_none));
#endif
/* Preserve OVERLOADs; the functions must be available to resolve
commit 6fc693c2f5ff6c2ae656bf3e6795b758e223f2cc
Author: Jason Merrill <ja...@redhat.com>
Date: Thu Jun 9 13:58:11 2011 -0400
* parser.c (cp_parser_constant_expression): Just return the
non-constant expression.
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 1d182a3..35f8957 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -7050,8 +7050,6 @@ cp_parser_constant_expression (cp_parser* parser,
}
if (allow_non_constant_p)
*non_constant_p = parser->non_integral_constant_expression_p;
- else if (parser->non_integral_constant_expression_p)
- expression = error_mark_node;
parser->non_integral_constant_expression_p
= saved_non_integral_constant_expression_p;
diff --git a/gcc/testsuite/g++.dg/cpp0x/regress/error-recovery1.C b/gcc/testsuite/g++.dg/cpp0x/regress/error-recovery1.C
index 2094d3e..9942c58 100644
--- a/gcc/testsuite/g++.dg/cpp0x/regress/error-recovery1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/regress/error-recovery1.C
@@ -7,3 +7,5 @@ foo ()
const bool b =; // { dg-error "" }
foo < b > (); // { dg-error "constant expression" }
};
+
+// { dg-error "no match" "" { target *-*-* } 8 }
diff --git a/gcc/testsuite/g++.dg/parse/template7.C b/gcc/testsuite/g++.dg/parse/template7.C
index 0d3f3fa..d7dfef7 100644
--- a/gcc/testsuite/g++.dg/parse/template7.C
+++ b/gcc/testsuite/g++.dg/parse/template7.C
@@ -2,4 +2,3 @@ template <int I>
void f(); // { dg-message "note" }
void g() { f<(3, 2)>(); } // { dg-error "" }
-// { dg-message "candidate" "candidate note" { target *-*-* } 4 }
commit 499bc6705442c7842bb3b2e338930ff615a39b38
Author: Jason Merrill <ja...@redhat.com>
Date: Thu Jun 9 00:56:22 2011 -0400
* semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR.
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 53e5993..bf6486b 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -2387,6 +2387,8 @@ finish_compound_literal (tree type, tree compound_literal,
return error_mark_node;
}
compound_literal = digest_init (type, compound_literal, complain);
+ if (TREE_CODE (compound_literal) == CONSTRUCTOR)
+ TREE_HAS_CONSTRUCTOR (compound_literal) = true;
/* Put static/constant array temporaries in static variables, but always
represent class temporaries with TARGET_EXPR so we elide copies. */
if ((!at_function_scope_p () || CP_TYPE_CONST_P (type))
commit cb52a4df30a31f1916d8d4ee8237a938ae3002fb
Author: Jason Merrill <ja...@redhat.com>
Date: Thu Jun 9 13:59:23 2011 -0400
* lib/prune.exp: Prune "note"s.
* g++.dg/uninit-pred-3_b.C: Remove dg-excess-errors.
* g++.dg/ext/injected-ttp.C: Specify -std=c++98.
* g++.dg/template/dependent-expr3.C: Likewise.
* g++.dg/parse/template7.C: Likewise.
* g++.old-deja/g++.bugs/900119_01.C: Likewise.
* g++.old-deja/g++.jason/rfg10.C: Likewise.
* g++.old-deja/g++.pt/friend38.C: Likewise.
* g++.old-deja/g++.pt/crash32.C: Likewise.
* g++.old-deja/g++.other/init4.C: Likewise.
* g++.old-deja/g++.other/friend8.C: Likewise.
* g++.dg/ext/complex7.C: Adjust expected output.
* g++.dg/diagnostic/method1.C: Likewise.
* g++.dg/parse/parameter-declaration-2.C: Likewise.
* g++.dg/parse/crash33.C: Likewise.
* g++.dg/other/warning1.C: Likewise.
* g++.dg/init/pr29571.C: Likewise.
* g++.dg/warn/overflow-warn-1.C: Likewise.
* g++.dg/warn/overflow-warn-3.C: Likewise.
* g++.dg/warn/overflow-warn-4.C: Likewise.
* g++.old-deja/g++.oliva/template1.C: Likewise.
diff --git a/gcc/testsuite/g++.dg/diagnostic/method1.C b/gcc/testsuite/g++.dg/diagnostic/method1.C
index 8e1225d..4a78104 100644
--- a/gcc/testsuite/g++.dg/diagnostic/method1.C
+++ b/gcc/testsuite/g++.dg/diagnostic/method1.C
@@ -18,3 +18,5 @@ baz ()
{
bar <int> ();
}
+
+// { dg-prune-output "without object" }
diff --git a/gcc/testsuite/g++.dg/ext/complex7.C b/gcc/testsuite/g++.dg/ext/complex7.C
index 9d5463f..5b3eead 100644
--- a/gcc/testsuite/g++.dg/ext/complex7.C
+++ b/gcc/testsuite/g++.dg/ext/complex7.C
@@ -4,3 +4,5 @@ class A
{
static const _Complex double x = 1.0 + 2.0i;
};
+
+// { dg-prune-output "constexpr. needed" }
diff --git a/gcc/testsuite/g++.dg/ext/injected-ttp.C b/gcc/testsuite/g++.dg/ext/injected-ttp.C
index 405bee8..5ef4a4e 100644
--- a/gcc/testsuite/g++.dg/ext/injected-ttp.C
+++ b/gcc/testsuite/g++.dg/ext/injected-ttp.C
@@ -1,7 +1,7 @@
// Test for doing the right thing with injected-class-name used as template
// type argument. This is an extension from DR 176.
-// { dg-options "-pedantic" }
+// { dg-options "-pedantic -std=c++98" }
template <class T>
struct A { };
diff --git a/gcc/testsuite/g++.dg/init/pr29571.C b/gcc/testsuite/g++.dg/init/pr29571.C
index 9e8e609..c9bfa28 100644
--- a/gcc/testsuite/g++.dg/init/pr29571.C
+++ b/gcc/testsuite/g++.dg/init/pr29571.C
@@ -3,6 +3,6 @@
struct A
{
static const int i = 0/0 + ""; // { dg-warning "division by zero" }
- // { dg-error "field initializer is not constant" "" { target *-*-* } 5 }
+ // { dg-error "field initializer is not constant|not a constant-expression" "" { target *-*-* } 5 }
static const int j = int(i);
};
diff --git a/gcc/testsuite/g++.dg/other/warning1.C b/gcc/testsuite/g++.dg/other/warning1.C
index 77653a1..c65ae0f 100644
--- a/gcc/testsuite/g++.dg/other/warning1.C
+++ b/gcc/testsuite/g++.dg/other/warning1.C
@@ -7,8 +7,8 @@ extern "C" int printf(const char *, ...);
struct S
{
- static const float inf = 1.0f / 0.0f; // { dg-warning "1.0|float|initialization" }
- static const float nan = 0.0f / 0.0f; // { dg-warning "0.0|float|initialization" }
+ static const float inf = 1.0f / 0.0f; // { dg-warning "1.0|float|initializ" }
+ static const float nan = 0.0f / 0.0f; // { dg-warning "0.0|float|initializ" }
};
int main()
diff --git a/gcc/testsuite/g++.dg/parse/crash33.C b/gcc/testsuite/g++.dg/parse/crash33.C
index 2ab84df..5ccb652 100644
--- a/gcc/testsuite/g++.dg/parse/crash33.C
+++ b/gcc/testsuite/g++.dg/parse/crash33.C
@@ -4,5 +4,8 @@
template<int>
void foo()
[
- throw; // { dg-error "expected" }
-} // { dg-error "expected" }
+ throw;
+}
+
+// { dg-prune-output "expected" }
+// { dg-prune-output "array bound" }
diff --git a/gcc/testsuite/g++.dg/parse/parameter-declaration-2.C b/gcc/testsuite/g++.dg/parse/parameter-declaration-2.C
index 7a9a24f..6116630 100644
--- a/gcc/testsuite/g++.dg/parse/parameter-declaration-2.C
+++ b/gcc/testsuite/g++.dg/parse/parameter-declaration-2.C
@@ -1 +1,2 @@
void f (int i, int p[i]); // { dg-error "use of parameter .i. outside function body" }
+// { dg-prune-output "array bound" }
diff --git a/gcc/testsuite/g++.dg/parse/template7.C b/gcc/testsuite/g++.dg/parse/template7.C
index d7dfef7..930e259 100644
--- a/gcc/testsuite/g++.dg/parse/template7.C
+++ b/gcc/testsuite/g++.dg/parse/template7.C
@@ -1,3 +1,5 @@
+// { dg-options -std=c++98 }
+
template <int I>
void f(); // { dg-message "note" }
diff --git a/gcc/testsuite/g++.dg/template/dependent-expr3.C b/gcc/testsuite/g++.dg/template/dependent-expr3.C
index 97fddbd..bf14c49 100644
--- a/gcc/testsuite/g++.dg/template/dependent-expr3.C
+++ b/gcc/testsuite/g++.dg/template/dependent-expr3.C
@@ -1,3 +1,4 @@
+// { dg-options -std=c++98 }
// { dg-do compile }
// Origin: jbrandmeyer at users dot sourceforge dot net
// PR c++/12573: COMPONENT_REFs must be inspected for dependness.
diff --git a/gcc/testsuite/g++.dg/uninit-pred-3_b.C b/gcc/testsuite/g++.dg/uninit-pred-3_b.C
index cfe2113..a66e04b 100644
--- a/gcc/testsuite/g++.dg/uninit-pred-3_b.C
+++ b/gcc/testsuite/g++.dg/uninit-pred-3_b.C
@@ -65,7 +65,7 @@ class M {
void P (int64 t)
{
- int cc; /* { dg-excess-errors "note: 'cc' was declared here" } */
+ int cc;
if (!GetC (&cc))
return;
diff --git a/gcc/testsuite/g++.dg/warn/overflow-warn-1.C b/gcc/testsuite/g++.dg/warn/overflow-warn-1.C
index 22c512a..7cd76e7 100644
--- a/gcc/testsuite/g++.dg/warn/overflow-warn-1.C
+++ b/gcc/testsuite/g++.dg/warn/overflow-warn-1.C
@@ -13,7 +13,7 @@ enum e {
in the standard). */
E2 = 2 || 1 / 0, /* { dg-bogus "warning: division by zero" "" { xfail *-*-* } 14 } */
E3 = 1 / 0, /* { dg-warning "division by zero" } */
- /* { dg-error "enumerator value for 'E3' is not an integer constant|not a constant expression" "enum error" { target *-*-* } 15 } */
+ /* { dg-error "enumerator value for 'E3' is not an integer constant|not a constant.expression" "enum error" { target *-*-* } 15 } */
/* But as in DR#031, the 1/0 in an evaluated subexpression means the
whole expression violates the constraints. */
E4 = 0 * (1 / 0), /* { dg-warning "division by zero" } */
diff --git a/gcc/testsuite/g++.dg/warn/overflow-warn-3.C b/gcc/testsuite/g++.dg/warn/overflow-warn-3.C
index d88c87a..73c0e00 100644
--- a/gcc/testsuite/g++.dg/warn/overflow-warn-3.C
+++ b/gcc/testsuite/g++.dg/warn/overflow-warn-3.C
@@ -13,7 +13,7 @@ enum e {
in the standard). */
E2 = 2 || 1 / 0, /* { dg-bogus "warning: division by zero" "" { xfail *-*-* } 14 } */
E3 = 1 / 0, /* { dg-warning "division by zero" } */
- /* { dg-error "enumerator value for 'E3' is not an integer constant|not a constant expression" "enum error" { target *-*-* } 15 } */
+ /* { dg-error "enumerator value for 'E3' is not an integer constant|not a constant.expression" "enum error" { target *-*-* } 15 } */
/* But as in DR#031, the 1/0 in an evaluated subexpression means the
whole expression violates the constraints. */
E4 = 0 * (1 / 0), /* { dg-warning "division by zero" } */
diff --git a/gcc/testsuite/g++.dg/warn/overflow-warn-4.C b/gcc/testsuite/g++.dg/warn/overflow-warn-4.C
index 374d294..24b3959 100644
--- a/gcc/testsuite/g++.dg/warn/overflow-warn-4.C
+++ b/gcc/testsuite/g++.dg/warn/overflow-warn-4.C
@@ -13,7 +13,7 @@ enum e {
in the standard). */
E2 = 2 || 1 / 0, /* { dg-bogus "warning: division by zero" "" { xfail *-*-* } } */
E3 = 1 / 0, /* { dg-warning "division by zero" } */
- /* { dg-error "enumerator value for 'E3' is not an integer constant|not a constant expression" "enum error" { target *-*-* } 15 } */
+ /* { dg-error "enumerator value for 'E3' is not an integer constant|not a constant.expression" "enum error" { target *-*-* } 15 } */
/* But as in DR#031, the 1/0 in an evaluated subexpression means the
whole expression violates the constraints. */
E4 = 0 * (1 / 0), /* { dg-warning "division by zero" } */
diff --git a/gcc/testsuite/g++.old-deja/g++.bugs/900119_01.C b/gcc/testsuite/g++.old-deja/g++.bugs/900119_01.C
index ace4e4b..0d181c7 100644
--- a/gcc/testsuite/g++.old-deja/g++.bugs/900119_01.C
+++ b/gcc/testsuite/g++.old-deja/g++.bugs/900119_01.C
@@ -1,3 +1,4 @@
+// { dg-options "-pedantic-errors -std=c++98" }
// { dg-do assemble }
// g++ 1.36.1 bug 900119_01
@@ -8,7 +9,7 @@
// keywords: member declaration, member initialization
-// { dg-prune-output "non-static data member initializers" }
+// { dg-prune-output "is a static data member" }
int global_int;
@@ -18,7 +19,7 @@ public:
static int class0_member_1 = 99; /* { dg-error "" } */
int &class0_member_2 = global_int; /* { dg-error "" } */
- class0 () : class0_member_2 (global_int) { } /* { dg-error "" } */
+ class0 () : class0_member_2 (global_int) { }
};
@@ -27,7 +28,7 @@ struct struct0 {
static int struct0_member_1 = 99; /* { dg-error "" } */
int &struct0_member_2 = global_int; /* { dg-error "" } */
- struct0 () : struct0_member_2 (global_int) { } /* { dg-error "" } */
+ struct0 () : struct0_member_2 (global_int) { }
};
// g++ does not allow unions to have more than one member with an initializer
@@ -43,7 +44,7 @@ union union1 {
union union2 {
int &union2_member_0 = global_int; /* { dg-error "" } */
- union2 () : union2_member_0 (global_int) { } /* { dg-error "" } */
+ union2 () : union2_member_0 (global_int) { }
};
int main () { return 0; }
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/rfg10.C b/gcc/testsuite/g++.old-deja/g++.jason/rfg10.C
index 58af19c..8769f5a 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/rfg10.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/rfg10.C
@@ -1,5 +1,5 @@
// { dg-do assemble }
-// { dg-options "-pedantic-errors" }
+// { dg-options "-pedantic-errors -std=c++98" }
// Bug: g++ doesn't notice the overflow in the enum values.
#include <limits.h>
index 995ac91..0000000
index 0000000..995ac91
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog-2005
@@ -0,0 +1,127 @@
+2005-04-03 Alexandre Oliva <aol...@redhat.com>
+
+ PR c++/19199
+ * expr2.C: Fixed.
+
+2003-06-04 J"orn Rennecke <joern.renne...@superh.com>
+
+ * template1.C (bar): Remove xfail marker.
+
+2002-07-06 Alexandre Oliva <aol...@redhat.com>
+
+ * linkage1.C, linkage1-main.cc: New test.
+
+2001-02-15 Alexandre Oliva <aol...@redhat.com>
+
+ * friend1.C: New test.
+
+2000-05-28 Alexandre Oliva <aol...@cygnus.com>
+
+ * expr2.C: New test.
+
+2000-04-19 Alexandre Oliva <ol...@lsd.ic.unicamp.br>
+
+ * stkalign.C: New test.
+
+1999-12-22 Alexandre Oliva <ol...@lsd.ic.unicamp.br>
+
+ * nameret2.C: New test.
+
+ * nameret1.C: New test.
+
+ * template10.C: New test.
+
+1999-11-21 Alexandre Oliva <ol...@lsd.ic.unicamp.br>
+
+ * delete2.C, delete3.C, delete4.C, delete5.C: New tests.
+
+1999-11-19 Alexandre Oliva <ol...@lsd.ic.unicamp.br>
+
+ * template7.C: Crash test passes, bug error is now bogus.
+
+1999-11-11 Alexandre Oliva <ol...@lsd.ic.unicamp.br>
+
+ * template9.C: New test.
+
+1999-09-18 Alexandre Oliva <ol...@lsd.ic.unicamp.br>
+
+ * overload1.C: New test.
+
+ * inline1.C: New test.
+
+1999-08-25 Alexandre Oliva <ol...@dcc.unicamp.br>
+
+ * thunk1.C: New test.
+
+1999-08-06 Alexandre Oliva <ol...@dcc.unicamp.br>
+
+ * dwarf2.C, dwarf3.C: Added XFAIL for Solaris/x86. Removed
+ -gdwarf.
+ * dwarf1.C: Removed -gdwarf.
+
+1999-08-05 Alexandre Oliva <ol...@dcc.unicamp.br>
+
+ * new1.C, template8.C: Removed XFAIL.
+ * template3.C: Re-introduced XFAIL. :-(
+
+1999-08-03 Alexandre Oliva <ol...@dcc.unicamp.br>
+
+ * ext1.C: New test.
+
+ * dwarf1.C, dwarf2.C, dwarf3.C: New tests.
+
+1999-07-20 Alexandre Oliva <ol...@dcc.unicamp.br>
+
+ * template8.C, typeof1.C: New test.
+
+1999-07-17 Alexandre Oliva <ol...@dcc.unicamp.br>
+
+ * template6.C, delete1.C, template7.C: New test.
+
+1999-07-13 Alexandre Oliva <ol...@dcc.unicamp.br>
+
+ * template5.C: New test.
+
+ * template4.C: New test.
+
+ * expr1.C: New test.
+
+ * partspec1.C: New test.
+
+1999-07-05 Alexandre Oliva <ol...@dcc.unicamp.br>
+
+ * typename1.C, typename2.C: New tests.
+
+ * template3.C: Fixed.
+
+ * ns3.C: New test.
+
+1999-07-03 Alexandre Oliva <ol...@dcc.unicamp.br>
+
+ * ctor1.C: New test.
+
+ * template3.C: New test.
+
+1999-07-02 Alexandre Oliva <ol...@dcc.unicamp.br>
+
+ * ns1.C: Typo.
+ * ns2.C: New test.
+
+ * template2.C: New test.
+
+ * ns1.C: New test.
+
+1999-07-01 Alexandre Oliva <ol...@dcc.unicamp.br>
+
+ * new1.C: New test.
+
+ * partord1.C: New test.
+
+ * template1.C: New test.
+
+
+Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/template1.C b/gcc/testsuite/g++.old-deja/g++.oliva/template1.C
index ce39496..908a069 100644
--- a/gcc/testsuite/g++.old-deja/g++.oliva/template1.C
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/template1.C
@@ -7,7 +7,7 @@
template<int P = 0> struct foo {
- static void bar(double (*)[dim]) {} // { dg-error "'dim' was not declared" }
+ static void bar(double (*)[dim]) {} // { dg-error "'dim' was not declared|array bound" }
};
void bar() {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/friend8.C b/gcc/testsuite/g++.old-deja/g++.other/friend8.C
index bbe4bf5..c1e93d9 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/friend8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/friend8.C
@@ -1,3 +1,4 @@
+// { dg-options "-std=c++98 -pedantic-errors" }
// { dg-do assemble }
//
// Copyright (C) 2000 Free Software Foundation, Inc.
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init4.C b/gcc/testsuite/g++.old-deja/g++.other/init4.C
index f877f2a..92562ef 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init4.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init4.C
@@ -1,3 +1,4 @@
+// { dg-options -std=c++98 }
// { dg-do assemble }
class error {
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash32.C b/gcc/testsuite/g++.old-deja/g++.pt/crash32.C
index 64ed229..0be26ea 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash32.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash32.C
@@ -1,3 +1,4 @@
+// { dg-options "-std=c++98 -pedantic-errors" }
// { dg-do assemble }
// Origin: Jason Merrill <ja...@cygnus.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend38.C b/gcc/testsuite/g++.old-deja/g++.pt/friend38.C
index 429e421..f2343d0 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/friend38.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/friend38.C
@@ -1,3 +1,4 @@
+// { dg-options "-std=c++98 -pedantic-errors" }
// { dg-do assemble }
// Overly simplified from testcase by "B. K. Oxley" <bink...@bigfoot.com>
diff --git a/gcc/testsuite/lib/prune.exp b/gcc/testsuite/lib/prune.exp
index 58b59a4..f5cbc4c 100644
--- a/gcc/testsuite/lib/prune.exp
+++ b/gcc/testsuite/lib/prune.exp
@@ -30,6 +30,9 @@ proc prune_gcc_output { text } {
regsub -all "(^|\n)Please submit.*instructions\[^\n\]*" $text "" text
regsub -all "(^|\n)\[0-9\]\[0-9\]* errors\." $text "" text
+ # Ignore informational notes.
+ regsub -all "(^|\n)\[^\n\]*: note: \[^\n\]*" $text "" text
+
# Ignore harmless -fpic warnings.
regsub -all "(^|\n)\[^\n\]*: warning: -f(pic|PIC) ignored for target\[^\n\]*" $text "" text
regsub -all "(^|\n)\[^\n\]*: warning: -f(pic|PIC)( and -fpic are| is)? not supported\[^\n\]*" $text "" text