Hi,
thus, as agreed a few days ago, I audited duplicate_decls for those
pairs of error and permerror where we want to use inform. I found at
least a straightforward case having to do with pragma omp, but other
cases required a little more work (I suspected that). For example in
some cases we issued pairs of errors with the same location (which I
merged); or we mentioned in the diagnostics the olddecl *before* the
newdecl (we want the inform about the olddecl). In some cases we had
inform (input_location, ...) and then '+', which seems pretty silly to
me. Finally, for consistency, I used 'ambiguating' similarly to
'conflicting' in at least a message, not sure if we could do better,
English-wise.
Tested x86_64-linux.
Thanks,
Paolo.
/////////////////////
/cp
2013-12-03 Paolo Carlini <paolo.carl...@oracle.com>
* decl.c (duplicate_decls): Replace pairs of errors and permerrors
with error + inform (permerror + inform, respectively).
/testsuite
2013-12-03 Paolo Carlini <paolo.carl...@oracle.com>
* g++.dg/cpp0x/constexpr-46336.C: Adjust expected messages.
* g++.dg/cpp0x/defaulted2.C: Likewise.
* g++.dg/cpp1y/auto-fn8.C: Likewise.
* g++.dg/gomp/udr-3.C: Likewise.
* g++.dg/lookup/extern-c-redecl5.C: Likewise.
* g++.dg/lookup/linkage1.C: Likewise.
* g++.dg/overload/new1.C: Likewise.
* g++.dg/parse/friend5.C: Likewise.
* g++.dg/parse/namespace-alias-1.C: Likewise.
* g++.dg/parse/namespace10.C: Likewise.
* g++.dg/parse/redef2.C: Likewise.
* g++.dg/template/friend44.C: Likewise.
* g++.old-deja/g++.brendan/crash42.C: Likewise.
* g++.old-deja/g++.brendan/crash52.C: Likewise.
* g++.old-deja/g++.brendan/crash55.C: Likewise.
* g++.old-deja/g++.jason/overload21.C: Likewise.
* g++.old-deja/g++.jason/overload5.C: Likewise.
* g++.old-deja/g++.jason/redecl1.C: Likewise.
* g++.old-deja/g++.law/arm8.C: Likewise.
* g++.old-deja/g++.other/main1.C: Likewise.
Index: cp/decl.c
===================================================================
--- cp/decl.c (revision 205590)
+++ cp/decl.c (working copy)
@@ -1299,8 +1299,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool
{
if (warning (OPT_Wattributes, "function %q+D redeclared as inline",
newdecl))
- inform (input_location, "previous declaration of %q+D "
- "with attribute noinline", olddecl);
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous declaration of %qD with attribute noinline",
+ olddecl);
}
else if (DECL_DECLARED_INLINE_P (olddecl)
&& DECL_UNINLINABLE (newdecl)
@@ -1308,7 +1309,8 @@ duplicate_decls (tree newdecl, tree olddecl, bool
{
if (warning (OPT_Wattributes, "function %q+D redeclared with "
"attribute noinline", newdecl))
- inform (input_location, "previous declaration of %q+D was inline",
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous declaration of %qD was inline",
olddecl);
}
}
@@ -1343,11 +1345,8 @@ duplicate_decls (tree newdecl, tree olddecl, bool
warning (0, "library function %q#D redeclared as non-function %q#D",
olddecl, newdecl);
else
- {
- error ("declaration of %q#D", newdecl);
- error ("conflicts with built-in declaration %q#D",
- olddecl);
- }
+ error ("declaration of %q#D conflicts with built-in "
+ "declaration %q#D", newdecl, olddecl);
return NULL_TREE;
}
else if (DECL_OMP_DECLARE_REDUCTION_P (olddecl))
@@ -1355,8 +1354,8 @@ duplicate_decls (tree newdecl, tree olddecl, bool
gcc_assert (DECL_OMP_DECLARE_REDUCTION_P (newdecl));
error_at (DECL_SOURCE_LOCATION (newdecl),
"redeclaration of %<pragma omp declare reduction%>");
- error_at (DECL_SOURCE_LOCATION (olddecl),
- "previous %<pragma omp declare reduction%> declaration");
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous %<pragma omp declare reduction%> declaration");
return error_mark_node;
}
else if (!types_match)
@@ -1407,11 +1406,8 @@ duplicate_decls (tree newdecl, tree olddecl, bool
/* A near match; override the builtin. */
if (TREE_PUBLIC (newdecl))
- {
- warning (0, "new declaration %q#D", newdecl);
- warning (0, "ambiguates built-in declaration %q#D",
- olddecl);
- }
+ warning (0, "new declaration %q#D ambiguates built-in "
+ "declaration %q#D", newdecl, olddecl);
else
warning (OPT_Wshadow,
DECL_BUILT_IN (olddecl)
@@ -1504,7 +1500,8 @@ duplicate_decls (tree newdecl, tree olddecl, bool
error ("%q#D redeclared as different kind of symbol", newdecl);
if (TREE_CODE (olddecl) == TREE_LIST)
olddecl = TREE_VALUE (olddecl);
- inform (input_location, "previous declaration of %q+#D", olddecl);
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous declaration %q#D", olddecl);
return error_mark_node;
}
@@ -1523,8 +1520,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool
if (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == TYPE_DECL
|| TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == TYPE_DECL)
{
- error ("declaration of template %q#D", newdecl);
- error ("conflicts with previous declaration %q+#D", olddecl);
+ error ("conflicting declaration of template %q#D", newdecl);
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous declaration %q#D", olddecl);
return error_mark_node;
}
else if (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == FUNCTION_DECL
@@ -1538,8 +1536,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool
&& same_type_p (TREE_TYPE (TREE_TYPE (newdecl)),
TREE_TYPE (TREE_TYPE (olddecl))))
{
- error ("new declaration %q#D", newdecl);
- error ("ambiguates old declaration %q+#D", olddecl);
+ error ("ambiguating new declaration %q#D", newdecl);
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "old declaration %q#D", olddecl);
}
return NULL_TREE;
}
@@ -1547,9 +1546,10 @@ duplicate_decls (tree newdecl, tree olddecl, bool
{
if (DECL_EXTERN_C_P (newdecl) && DECL_EXTERN_C_P (olddecl))
{
- error ("declaration of C function %q#D conflicts with",
+ error ("conflicting declaration of C function %q#D",
newdecl);
- error ("previous declaration %q+#D here", olddecl);
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous declaration %q#D", olddecl);
return NULL_TREE;
}
/* For function versions, params and types match, but they
@@ -1559,8 +1559,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool
&& compparms (TYPE_ARG_TYPES (TREE_TYPE (newdecl)),
TYPE_ARG_TYPES (TREE_TYPE (olddecl))))
{
- error ("new declaration %q#D", newdecl);
- error ("ambiguates old declaration %q+#D", olddecl);
+ error ("ambiguating new declaration of %q#D", newdecl);
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "old declaration %q#D", olddecl);
return error_mark_node;
}
else
@@ -1569,8 +1570,8 @@ duplicate_decls (tree newdecl, tree olddecl, bool
else
{
error ("conflicting declaration %q#D", newdecl);
- inform (input_location,
- "%q+D has a previous declaration as %q#D", olddecl, olddecl);
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous declaration as %q#D", olddecl);
return error_mark_node;
}
}
@@ -1622,8 +1623,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool
A namespace-name defined at global scope shall not be
declared as the name of any other entity in any global scope
of the program. */
- error ("declaration of namespace %qD conflicts with", newdecl);
- error ("previous declaration of namespace %q+D here", olddecl);
+ error ("conflicting declaration of namespace %qD", newdecl);
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous declaration of namespace %qD here", olddecl);
return error_mark_node;
}
else
@@ -1645,9 +1647,10 @@ duplicate_decls (tree newdecl, tree olddecl, bool
&& prototype_p (TREE_TYPE (newdecl)))
{
/* Prototype decl follows defn w/o prototype. */
- warning_at (input_location, 0, "prototype for %q+#D", newdecl);
- warning_at (DECL_SOURCE_LOCATION (olddecl), 0,
- "follows non-prototype definition here");
+ warning_at (DECL_SOURCE_LOCATION (newdecl), 0,
+ "prototype specified for %q#D", newdecl);
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous non-prototype definition here");
}
else if (VAR_OR_FUNCTION_DECL_P (olddecl)
&& DECL_LANGUAGE (newdecl) != DECL_LANGUAGE (olddecl))
@@ -1686,10 +1689,11 @@ duplicate_decls (tree newdecl, tree olddecl, bool
}
else
{
- error ("previous declaration of %q+#D with %qL linkage",
- olddecl, DECL_LANGUAGE (olddecl));
- error ("conflicts with new declaration with %qL linkage",
- DECL_LANGUAGE (newdecl));
+ error ("conflicting declaration of %q#D with %qL linkage",
+ newdecl, DECL_LANGUAGE (newdecl));
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous declaration with %qL linkage",
+ DECL_LANGUAGE (olddecl));
}
}
@@ -1729,19 +1733,20 @@ duplicate_decls (tree newdecl, tree olddecl, bool
if (1 == simple_cst_equal (TREE_PURPOSE (t1),
TREE_PURPOSE (t2)))
{
- permerror (input_location,
- "default argument given for parameter %d "
- "of %q#D", i, newdecl);
- permerror (input_location,
- "after previous specification in %q+#D",
- olddecl);
+ if (permerror (input_location,
+ "default argument given for parameter "
+ "%d of %q#D", i, newdecl))
+ permerror (DECL_SOURCE_LOCATION (olddecl),
+ "previous specification in %q#D here",
+ olddecl);
}
else
{
error ("default argument given for parameter %d "
"of %q#D", i, newdecl);
- error ("after previous specification in %q+#D",
- olddecl);
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous specification in %q#D here",
+ olddecl);
}
}
}
@@ -1805,7 +1810,8 @@ duplicate_decls (tree newdecl, tree olddecl, bool
if (warning (OPT_Wredundant_decls,
"redundant redeclaration of %qD in same scope",
newdecl))
- inform (input_location, "previous declaration of %q+D", olddecl);
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous declaration of %qD", olddecl);
}
if (!(DECL_TEMPLATE_INSTANTIATION (olddecl)
@@ -1814,7 +1820,8 @@ duplicate_decls (tree newdecl, tree olddecl, bool
if (DECL_DELETED_FN (newdecl))
{
error ("deleted definition of %qD", newdecl);
- error ("after previous declaration %q+D", olddecl);
+ inform (DECL_SOURCE_LOCATION (olddecl),
+ "previous declaration of %qD", olddecl);
}
DECL_DELETED_FN (newdecl) |= DECL_DELETED_FN (olddecl);
}
Index: testsuite/g++.dg/cpp0x/constexpr-46336.C
===================================================================
--- testsuite/g++.dg/cpp0x/constexpr-46336.C (revision 205590)
+++ testsuite/g++.dg/cpp0x/constexpr-46336.C (working copy)
@@ -4,7 +4,7 @@
extern "C" {
enum A { };
inline constexpr A
- f(A a, A b) // { dg-error "previous declaration" }
+ f(A a, A b) // { dg-message "previous declaration" }
{ return A(static_cast<int>(a) & static_cast<int>(b)); }
enum B { };
inline constexpr B
Index: testsuite/g++.dg/cpp0x/defaulted2.C
===================================================================
--- testsuite/g++.dg/cpp0x/defaulted2.C (revision 205590)
+++ testsuite/g++.dg/cpp0x/defaulted2.C (working copy)
@@ -1,7 +1,7 @@
// Negative test for defaulted/deleted fns.
// { dg-options "-std=c++11" }
-void f(); // { dg-error "previous" }
+void f(); // { dg-message "previous" }
void f() = delete; // { dg-error "deleted" }
struct A
Index: testsuite/g++.dg/cpp1y/auto-fn8.C
===================================================================
--- testsuite/g++.dg/cpp1y/auto-fn8.C (revision 205590)
+++ testsuite/g++.dg/cpp1y/auto-fn8.C (working copy)
@@ -1,6 +1,6 @@
// { dg-options "-std=c++1y -pedantic-errors" }
-auto f() { return 42; } // { dg-error "old declaration .auto" }
+auto f() { return 42; } // { dg-message "old declaration .auto"
}
auto f(); // OK
int f(); // { dg-error "new declaration" }
Index: testsuite/g++.dg/gomp/udr-3.C
===================================================================
--- testsuite/g++.dg/gomp/udr-3.C (revision 205590)
+++ testsuite/g++.dg/gomp/udr-3.C (working copy)
@@ -63,12 +63,12 @@ int y = f4 <S> ();
namespace N1
{
- #pragma omp declare reduction (+: ::S: omp_out.s *= omp_in.s)
// { dg-error "previous" }
+ #pragma omp declare reduction (+: ::S: omp_out.s *= omp_in.s)
// { dg-message "previous" }
#pragma omp declare reduction (+: S: omp_out.s += omp_in.s) // {
dg-error "redeclaration of" }
void
f5 ()
{
- #pragma omp declare reduction (f5: S: omp_out.s *= omp_in.s) // {
dg-error "previous" }
+ #pragma omp declare reduction (f5: S: omp_out.s *= omp_in.s) // {
dg-message "previous" }
#pragma omp declare reduction (f5: ::S: omp_out.s += omp_in.s) // {
dg-error "redeclaration of" }
}
}
@@ -84,10 +84,10 @@ namespace N2
namespace N3
{
- #pragma omp declare reduction (+: ::S: omp_out.s *= omp_in.s)
// { dg-error "previous" }
+ #pragma omp declare reduction (+: ::S: omp_out.s *= omp_in.s)
// { dg-message "previous" }
#pragma omp declare reduction (+: T: omp_out.t += omp_in.t)
#pragma omp declare reduction (+: S: omp_out.s += omp_in.s) // {
dg-error "redeclaration of" }
- #pragma omp declare reduction (n3: long: omp_out += omp_in) // {
dg-error "previous" }
+ #pragma omp declare reduction (n3: long: omp_out += omp_in) // {
dg-message "previous" }
#pragma omp declare reduction (n3: long int: omp_out += omp_in) // {
dg-error "redeclaration of" }
#pragma omp declare reduction (n3: short unsigned: omp_out += omp_in)
#pragma omp declare reduction (n3: short int: omp_out += omp_in)
@@ -95,9 +95,9 @@ namespace N3
f6 ()
{
#pragma omp declare reduction (f6: T: omp_out.t += omp_in.t)
- #pragma omp declare reduction (f6: S: omp_out.s *= omp_in.s) // {
dg-error "previous" }
+ #pragma omp declare reduction (f6: S: omp_out.s *= omp_in.s) // {
dg-message "previous" }
#pragma omp declare reduction (f6: ::S: omp_out.s += omp_in.s) // {
dg-error "redeclaration of" }
- #pragma omp declare reduction (f6: long: omp_out += omp_in)
// { dg-error "previous" }
+ #pragma omp declare reduction (f6: long: omp_out += omp_in)
// { dg-message "previous" }
#pragma omp declare reduction (f6: long int: omp_out += omp_in) // {
dg-error "redeclaration of" }
#pragma omp declare reduction (f6: short unsigned: omp_out += omp_in)
#pragma omp declare reduction (f6: short int: omp_out += omp_in)
@@ -124,7 +124,7 @@ namespace N5
int
f7 ()
{
- #pragma omp declare reduction (f7: T: omp_out.s *= omp_in.s) // {
dg-error "previous" }
+ #pragma omp declare reduction (f7: T: omp_out.s *= omp_in.s) // {
dg-message "previous" }
#pragma omp declare reduction (f7: T: omp_out.s += omp_in.s) // {
dg-error "redeclaration of" }
return 0;
}
@@ -145,9 +145,9 @@ namespace N6
f8 ()
{
#pragma omp declare reduction (f8: T: omp_out.t += omp_in.t)
- #pragma omp declare reduction (f8: U: omp_out.s *= omp_in.s) // {
dg-error "previous" }
+ #pragma omp declare reduction (f8: U: omp_out.s *= omp_in.s) // {
dg-message "previous" }
#pragma omp declare reduction (f8: ::S: omp_out.s += omp_in.s) // {
dg-error "redeclaration of" }
- #pragma omp declare reduction (f8: long: omp_out += omp_in)
// { dg-error "previous" }
+ #pragma omp declare reduction (f8: long: omp_out += omp_in)
// { dg-message "previous" }
#pragma omp declare reduction (f8: long int: omp_out += omp_in) // {
dg-error "redeclaration of" }
#pragma omp declare reduction (f8: short unsigned: omp_out += omp_in)
#pragma omp declare reduction (f8: short int: omp_out += omp_in)
Index: testsuite/g++.dg/lookup/extern-c-redecl5.C
===================================================================
--- testsuite/g++.dg/lookup/extern-c-redecl5.C (revision 205590)
+++ testsuite/g++.dg/lookup/extern-c-redecl5.C (working copy)
@@ -6,11 +6,11 @@
class frok
{
int this_errno;
- friend int fork (void); // { dg-error "previous declaration .*?C\\+\\+.
linkage" }
+ friend int fork (void); // { dg-message "previous declaration .*?C\\+\\+.
linkage" }
};
extern "C" int
-fork (void) // { dg-error "conflicts with new declaration .*?C. linkage" }}
+fork (void) // { dg-error "conflicting declaration .*?C. linkage" }}
{
frok grouped;
return grouped.this_errno;
Index: testsuite/g++.dg/lookup/linkage1.C
===================================================================
--- testsuite/g++.dg/lookup/linkage1.C (revision 205590)
+++ testsuite/g++.dg/lookup/linkage1.C (working copy)
@@ -1,4 +1,4 @@
// DR 563
-extern int i; // { dg-error "linkage" }
+extern int i; // { dg-message "linkage" }
extern "C" int i; // { dg-error "linkage" }
Index: testsuite/g++.dg/overload/new1.C
===================================================================
--- testsuite/g++.dg/overload/new1.C (revision 205590)
+++ testsuite/g++.dg/overload/new1.C (working copy)
@@ -7,7 +7,7 @@ struct X{
};
-void f(X *x = new X); // { dg-error "" }
+void f(X *x = new X); // { dg-message "" }
void f(X *x = new X(4)); // { dg-error "" }
Index: testsuite/g++.dg/parse/friend5.C
===================================================================
--- testsuite/g++.dg/parse/friend5.C (revision 205590)
+++ testsuite/g++.dg/parse/friend5.C (working copy)
@@ -2,6 +2,6 @@
extern "C" struct A
{
- friend void foo(int) {} // { dg-error "declaration" }
+ friend void foo(int) {} // { dg-message "declaration" }
friend void foo() {} // { dg-error "foo" "err" }
};
Index: testsuite/g++.dg/parse/namespace-alias-1.C
===================================================================
--- testsuite/g++.dg/parse/namespace-alias-1.C (revision 205590)
+++ testsuite/g++.dg/parse/namespace-alias-1.C (working copy)
@@ -2,6 +2,6 @@
namespace N
{
- namespace M = N; // { dg-error "previous declaration" }
+ namespace M = N; // { dg-message "previous declaration" }
namespace M {} // { dg-error "declaration of namespace" }
}
Index: testsuite/g++.dg/parse/namespace10.C
===================================================================
--- testsuite/g++.dg/parse/namespace10.C (revision 205590)
+++ testsuite/g++.dg/parse/namespace10.C (working copy)
@@ -1,6 +1,6 @@
// PR c++/16529
-namespace m {} // { dg-error "" }
+namespace m {} // { dg-message "" }
namespace n {
namespace m {}
Index: testsuite/g++.dg/parse/redef2.C
===================================================================
--- testsuite/g++.dg/parse/redef2.C (revision 205590)
+++ testsuite/g++.dg/parse/redef2.C (working copy)
@@ -1,6 +1,6 @@
// { dg-do compile }
-char * d [10]; // { dg-message "8: 'd' has a previous declaration as" }
+char * d [10]; // { dg-message "8: previous declaration as" }
char e [15][10];
int (*f)();
Index: testsuite/g++.dg/template/friend44.C
===================================================================
--- testsuite/g++.dg/template/friend44.C (revision 205590)
+++ testsuite/g++.dg/template/friend44.C (working copy)
@@ -3,7 +3,7 @@
template<int> struct A
{
- friend int foo(); // { dg-error "14:new declaration" }
+ friend int foo(); // { dg-error "14:ambiguating new declaration" }
};
-void foo() { A<0> a; } // { dg-error "6:ambiguates old declaration" }
+void foo() { A<0> a; } // { dg-message "6:old declaration" }
Index: testsuite/g++.old-deja/g++.brendan/crash42.C
===================================================================
--- testsuite/g++.old-deja/g++.brendan/crash42.C (revision 205590)
+++ testsuite/g++.old-deja/g++.brendan/crash42.C (working copy)
@@ -1,6 +1,6 @@
// { dg-do assemble }
// GROUPS passed old-abort
-int fn();// { dg-error "" } ambiguates.*
+int fn();// { dg-message "" } ambiguates.*
int x;
int& fn() {// { dg-error "" } new decl.*
return x;}
Index: testsuite/g++.old-deja/g++.brendan/crash52.C
===================================================================
--- testsuite/g++.old-deja/g++.brendan/crash52.C (revision 205590)
+++ testsuite/g++.old-deja/g++.brendan/crash52.C (working copy)
@@ -5,9 +5,9 @@
class A {
public:
- friend A f(A &a);// { dg-error "ambiguates" }
+ friend A f(A &a);// { dg-message "old declaration" }
};
-A &f(A &a) {// { dg-error "new decl" }
+A &f(A &a) {// { dg-error "new declaration" }
std::cout << "Blah\n";
} // { dg-warning "no return statement" }
Index: testsuite/g++.old-deja/g++.brendan/crash55.C
===================================================================
--- testsuite/g++.old-deja/g++.brendan/crash55.C (revision 205590)
+++ testsuite/g++.old-deja/g++.brendan/crash55.C (working copy)
@@ -1,6 +1,6 @@
// { dg-do compile }
// GROUPS passed old-abort
- extern int f(int); // { dg-error "ambiguates" }
+ extern int f(int); // { dg-message "old declaration" }
int& f(int x) // { dg-error "new declaration" }
{
Index: testsuite/g++.old-deja/g++.jason/overload21.C
===================================================================
--- testsuite/g++.old-deja/g++.jason/overload21.C (revision 205590)
+++ testsuite/g++.old-deja/g++.jason/overload21.C (working copy)
@@ -1,7 +1,7 @@
// { dg-do assemble }
struct X {
void f (int = 4, char = 'r'); // { dg-error "previous specification"
}
- void g (int = 4, char = 'r'); // { dg-error "previous specification"
}
+ void g (int = 4, char = 'r'); // { dg-message "previous
specification" }
};
void
Index: testsuite/g++.old-deja/g++.jason/overload5.C
===================================================================
--- testsuite/g++.old-deja/g++.jason/overload5.C (revision 205590)
+++ testsuite/g++.old-deja/g++.jason/overload5.C (working copy)
@@ -1,5 +1,5 @@
// { dg-do assemble }
// Testcase for simple overloading resolution.
-int foo (); // { dg-error "" }
+int foo (); // { dg-message "" }
void foo (); // { dg-error "" } disallowed overload
Index: testsuite/g++.old-deja/g++.jason/redecl1.C
===================================================================
--- testsuite/g++.old-deja/g++.jason/redecl1.C (revision 205590)
+++ testsuite/g++.old-deja/g++.jason/redecl1.C (working copy)
@@ -3,7 +3,7 @@ class A
{
public:
A (const A& ccref);
- friend A const re (const A& v1); // { dg-error "ambiguates" }
+ friend A const re (const A& v1); // { dg-message "old declaration" }
};
A // const
Index: testsuite/g++.old-deja/g++.law/arm8.C
===================================================================
--- testsuite/g++.old-deja/g++.law/arm8.C (revision 205590)
+++ testsuite/g++.old-deja/g++.law/arm8.C (working copy)
@@ -7,7 +7,7 @@
// Date: Tue, 16 Mar 93 12:05:24 +0100
struct K {
- void f( int *p = 0); // { dg-error "" } previous specification
+ void f( int *p = 0); // { dg-message "" } previous specification
};
extern int * q;
Index: testsuite/g++.old-deja/g++.other/main1.C
===================================================================
--- testsuite/g++.old-deja/g++.other/main1.C (revision 205590)
+++ testsuite/g++.old-deja/g++.other/main1.C (working copy)
@@ -1,12 +1,12 @@
// { dg-do compile }
-int main() // { dg-error "previous declaration" }
+int main() // { dg-message "previous declaration" }
{
return 0;
}
-int main(int, const char**) // { dg-error "conflicts" }
+int main(int, const char**) // { dg-error "conflicting" }
{
return 0;
}