This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Uniqueness of test names
- From: "Joseph S. Myers" <joseph at codesourcery dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Sun, 13 Mar 2005 21:22:34 +0000 (UTC)
- Subject: Uniqueness of test names
Every test assertion (everything which gets a PASS or FAIL line in a .sum
file and is counted in the numbers of testcases given at the end) should
have a unique name (the test that appears after the PASS: or FAIL:), so
that regression testers can reliably compare test results between runs.
One way in which test assertions fail to have unique names is the use of
multiple dg-error or dg-warning directives for the same line. The second
argument of dg-error is a name which is inserted in the full test name on
the PASS or FAIL line, and in the case of multiple directives for one line
of code all but at most one need to have a nonempty name given there.
This patch adds such names to improve uniqueness. Tested on
x86_64-unknown-linux-gnu. I've applied the C parts to mainline and 4.0
branch. OK to commit the C++ parts?
The other failures of uniqueness are in the PCH tests, for both C and C++.
For example, you have
PASS: ./common-1.h -O0 -g (test for excess errors)
PASS: gcc.dg/pch/common-1.c -O0 -g (test for excess errors)
PASS: gcc.dg/pch/common-1.c -O0 -g (test for excess errors)
PASS: gcc.dg/pch/common-1.c -O0 -g assembly comparison
where the middle two tests have the same name. This would seem to be a
bug in the test harness: when compiling a file twice, with and without
PCH, the compilations need different test names.
--
Joseph S. Myers http://www.srcf.ucam.org/~jsm28/gcc/
jsm@polyomino.org.uk (personal mail)
joseph@codesourcery.com (CodeSourcery mail)
jsm28@gcc.gnu.org (Bugzilla assignments and CCs)
2005-03-13 Joseph S. Myers <joseph@codesourcery.com>
* gcc.dg/anon-struct-6.c, gcc.dg/array-8.c,
gcc.dg/cpp/19940712-1.c, gcc.dg/cpp/19951025-1.c,
gcc.dg/cpp/tr-warn6.c, gcc.dg/deprecated.c, gcc.dg/init-bad-1.c,
gcc.dg/init-bad-2.c, gcc.dg/init-bad-3.c, gcc.dg/m-un-2.c,
gcc.dg/parm-mismatch-1.c, gcc.dg/redecl-1.c: Ensure uniqueness of
test assertion names.
2005-03-13 Joseph S. Myers <joseph@codesourcery.com>
* g++.dg/other/cv_func.C, g++.dg/other/offsetof3.C,
g++.dg/parse/error11.C, g++.dg/tc1/dr108.C,
g++.dg/template/local4.C, g++.dg/template/nontype6.C,
g++.dg/warn/deprecated.C: Ensure uniqueness of test assertion
names.
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/anon-struct-6.c GCC/gcc/testsuite/gcc.dg/anon-struct-6.c
--- GCC.orig/gcc/testsuite/gcc.dg/anon-struct-6.c 2004-11-06 16:21:45.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/anon-struct-6.c 2005-03-13 18:04:24.000000000 +0000
@@ -9,4 +9,4 @@ struct s {
const;
};
/* { dg-warning "warning: useless type qualifier in empty declaration" "empty" { target *-*-* } 9 } */
-/* { dg-warning "warning: empty declaration" "empty" { target *-*-* } 9 } */
+/* { dg-warning "warning: empty declaration" "empty 2" { target *-*-* } 9 } */
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/array-8.c GCC/gcc/testsuite/gcc.dg/array-8.c
--- GCC.orig/gcc/testsuite/gcc.dg/array-8.c 2004-11-20 20:29:08.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/array-8.c 2005-03-13 18:09:34.000000000 +0000
@@ -43,7 +43,7 @@ g (void)
pv[0]; /* { dg-warning "warning: dereferencing 'void \\*' pointer" } */
0[pv]; /* { dg-warning "warning: dereferencing 'void \\*' pointer" } */
sip[0]; /* { dg-error "error: invalid use of undefined type 'struct si'" } */
- /* { dg-error "error: dereferencing pointer to incomplete type" "" { target *-*-* } 45 } */
+ /* { dg-error "error: dereferencing pointer to incomplete type" "incomplete" { target *-*-* } 45 } */
0[sip]; /* { dg-error "error: invalid use of undefined type 'struct si'" } */
- /* { dg-error "error: dereferencing pointer to incomplete type" "" { target *-*-* } 47 } */
+ /* { dg-error "error: dereferencing pointer to incomplete type" "incomplete" { target *-*-* } 47 } */
}
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/cpp/19940712-1.c GCC/gcc/testsuite/gcc.dg/cpp/19940712-1.c
--- GCC.orig/gcc/testsuite/gcc.dg/cpp/19940712-1.c 2000-06-29 19:55:26.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/cpp/19940712-1.c 2005-03-13 18:03:29.000000000 +0000
@@ -3,7 +3,7 @@
/* dg.exp doesn't read the header files for magic comments. */
/* { dg-error "unterminated comment" "" { target *-*-* } 4 } */
-/* { dg-error "unterminated comment" "" { target *-*-* } 8 } */
+/* { dg-error "unterminated comment" "header error" { target *-*-* } 8 } */
#include "19940712-1.h" /* { dg-error "" } // In file included from: */
#include "19940712-1a.h" /* { dg-error "" } // In file included from: */
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/cpp/19951025-1.c GCC/gcc/testsuite/gcc.dg/cpp/19951025-1.c
--- GCC.orig/gcc/testsuite/gcc.dg/cpp/19951025-1.c 2001-08-07 00:15:20.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/cpp/19951025-1.c 2005-03-13 18:03:46.000000000 +0000
@@ -1,4 +1,4 @@
/* { dg-do preprocess } */
-/* { dg-error "include expects" "" { target *-*-* } 4 } */
-/* { dg-error "newline at end" "" { target *-*-* } 4 } */
+/* { dg-error "include expects" "include" { target *-*-* } 4 } */
+/* { dg-error "newline at end" "newline" { target *-*-* } 4 } */
#include /\
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/cpp/tr-warn6.c GCC/gcc/testsuite/gcc.dg/cpp/tr-warn6.c
--- GCC.orig/gcc/testsuite/gcc.dg/cpp/tr-warn6.c 2000-12-08 02:21:06.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/cpp/tr-warn6.c 2005-03-13 18:04:08.000000000 +0000
@@ -13,7 +13,7 @@
#define foo7(AA, hello, world, EEE) sdf "A B hello C,world,DhelloE F" fds EEE /* { dg-warning "macro argument \"hello\" would be stringified" "traditional stringification" } */
/* Catch the second warning from the above line. */
-/* { dg-warning "macro argument \"world\" would be stringified" "traditional stringification" { target *-*-* } 13 } */
+/* { dg-warning "macro argument \"world\" would be stringified" "traditional stringification second warning" { target *-*-* } 13 } */
# 19 "sys-header.h" 3
/* We are in system headers now, no -Wtraditional warnings should issue. */
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/deprecated.c GCC/gcc/testsuite/gcc.dg/deprecated.c
--- GCC.orig/gcc/testsuite/gcc.dg/deprecated.c 2004-09-15 20:39:49.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/deprecated.c 2005-03-13 18:05:21.000000000 +0000
@@ -53,10 +53,10 @@ int func1()
int (*pf)() = f1; /* { dg-warning "'f1' is deprecated" "" } */
z = w + x + y + g1 + g2 + g3; /* { dg-warning "'x' is deprecated" "" } */
- /* { dg-warning "'y' is deprecated" "" { target *-*-* } 55 } */
- /* { dg-warning "'g2' is deprecated" "" { target *-*-* } 55 } */
- /* { dg-warning "'g3' is deprecated" "" { target *-*-* } 55 } */
- return f1(); /* { dg-warning "'f1' is deprecated" "" } */
+ /* { dg-warning "'y' is deprecated" "y" { target *-*-* } 55 } */
+ /* { dg-warning "'g2' is deprecated" "g2" { target *-*-* } 55 } */
+ /* { dg-warning "'g3' is deprecated" "g3" { target *-*-* } 55 } */
+ return f1(); /* { dg-warning "'f1' is deprecated" "f1" } */
}
int func2(S1 *p)
@@ -71,7 +71,7 @@ int func2(S1 *p)
p->u1.field5 = g1 + p->field7;
p->u2.field9; /* { dg-warning "'u2' is deprecated" "" } */
return p->u1.field6 + p->field8; /* { dg-warning "'field6' is deprecated" "" } */
- /* { dg-warning "'field8' is deprecated" "" { target *-*-* } 73 } */
+ /* { dg-warning "'field8' is deprecated" "field8" { target *-*-* } 73 } */
}
struct SS1 {
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/init-bad-1.c GCC/gcc/testsuite/gcc.dg/init-bad-1.c
--- GCC.orig/gcc/testsuite/gcc.dg/init-bad-1.c 2004-11-29 11:33:26.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/init-bad-1.c 2005-03-13 18:07:47.000000000 +0000
@@ -10,8 +10,8 @@ void h(a)
int a = 1; /* { dg-error "error: parameter 'a' is initialized" } */
{
struct s x = { 0 }; /* { dg-error "error: variable 'x' has initializer but incomplete type" } */
- /* { dg-warning "excess elements|near init" "" { target *-*-* } 12 } */
- /* { dg-error "storage size" "" { target *-*-* } 12 } */
+ /* { dg-warning "excess elements|near init" "excess" { target *-*-* } 12 } */
+ /* { dg-error "storage size" "size" { target *-*-* } 12 } */
}
char s[1] = "x";
@@ -19,27 +19,27 @@ char s1[1] = { "x" };
char t[1] = "xy"; /* { dg-warning "warning: initializer-string for array of chars is too long" } */
char t1[1] = { "xy" }; /* { dg-warning "warning: initializer-string for array of chars is too long" } */
char u[1] = { "x", "x" }; /* { dg-error "error: excess elements in char array initializer" } */
-/* { dg-error "near init" "" { target *-*-* } 21 } */
+/* { dg-error "near init" "near" { target *-*-* } 21 } */
int i = { }; /* { dg-error "error: empty scalar initializer" } */
-/* { dg-error "near init" "" { target *-*-* } 24 } */
+/* { dg-error "near init" "near" { target *-*-* } 24 } */
int j = { 1 };
int k = { 1, 2 }; /* { dg-warning "warning: excess elements in scalar initializer" } */
-/* { dg-warning "near init" "" { target *-*-* } 29 } */
+/* { dg-warning "near init" "near" { target *-*-* } 29 } */
int a1[1] = { [1] = 0 }; /* { dg-error "error: array index in initializer exceeds array bounds" } */
-/* { dg-error "near init" "" { target *-*-* } 32 } */
+/* { dg-error "near init" "near" { target *-*-* } 32 } */
int a2[1] = { [-1] = 0 }; /* { dg-error "error: array index in initializer exceeds array bounds" } */
-/* { dg-error "near init" "" { target *-*-* } 34 } */
+/* { dg-error "near init" "near" { target *-*-* } 34 } */
int a3[1] = { [0 ... 1] = 0 }; /* { dg-error "error: array index range in initializer exceeds array bounds" } */
-/* { dg-error "near init" "" { target *-*-* } 36 } */
+/* { dg-error "near init" "near" { target *-*-* } 36 } */
int a4[2] = { [1 ... 0] = 0 }; /* { dg-error "error: empty index range in initializer" } */
-/* { dg-error "near init" "" { target *-*-* } 38 } */
+/* { dg-error "near init" "near" { target *-*-* } 38 } */
int a5[2] = { [0 ... 2] = 0 }; /* { dg-error "error: array index range in initializer exceeds array bounds" } */
-/* { dg-error "near init" "" { target *-*-* } 40 } */
+/* { dg-error "near init" "near" { target *-*-* } 40 } */
int a6[2] = { [-1 ... 1] = 0 }; /* { dg-error "error: array index in initializer exceeds array bounds" } */
-/* { dg-error "near init" "" { target *-*-* } 42 } */
+/* { dg-error "near init" "near" { target *-*-* } 42 } */
int a7[] = { [-1 ... 1] = 0 }; /* { dg-error "error: array index in initializer exceeds array bounds" } */
-/* { dg-error "near init" "" { target *-*-* } 44 } */
+/* { dg-error "near init" "near" { target *-*-* } 44 } */
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/init-bad-2.c GCC/gcc/testsuite/gcc.dg/init-bad-2.c
--- GCC.orig/gcc/testsuite/gcc.dg/init-bad-2.c 2004-11-29 11:33:26.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/init-bad-2.c 2005-03-13 18:08:22.000000000 +0000
@@ -11,8 +11,8 @@ void h(a)
int a = 1; /* { dg-error "error: parameter 'a' is initialized" } */
{
struct s x = { 0 }; /* { dg-error "error: variable 'x' has initializer but incomplete type" } */
- /* { dg-warning "excess elements|near init" "" { target *-*-* } 13 } */
- /* { dg-error "storage size" "" { target *-*-* } 13 } */
+ /* { dg-warning "excess elements|near init" "near" { target *-*-* } 13 } */
+ /* { dg-error "storage size" "size" { target *-*-* } 13 } */
}
char s[1] = "x";
@@ -20,14 +20,14 @@ char s1[1] = { "x" };
char t[1] = "xy"; /* { dg-warning "warning: initializer-string for array of chars is too long" } */
char t1[1] = { "xy" }; /* { dg-warning "warning: initializer-string for array of chars is too long" } */
char u[1] = { "x", "x" }; /* { dg-error "error: excess elements in char array initializer" } */
-/* { dg-error "near init" "" { target *-*-* } 22 } */
+/* { dg-error "near init" "near" { target *-*-* } 22 } */
int j = { 1 };
int k = { 1, 2 }; /* { dg-warning "warning: excess elements in scalar initializer" } */
-/* { dg-warning "near init" "" { target *-*-* } 27 } */
+/* { dg-warning "near init" "near" { target *-*-* } 27 } */
int a1[1] = { [1] = 0 }; /* { dg-error "error: array index in initializer exceeds array bounds" } */
-/* { dg-error "near init" "" { target *-*-* } 30 } */
+/* { dg-error "near init" "near" { target *-*-* } 30 } */
int a2[1] = { [-1] = 0 }; /* { dg-error "error: array index in initializer exceeds array bounds" } */
-/* { dg-error "near init" "" { target *-*-* } 32 } */
+/* { dg-error "near init" "near" { target *-*-* } 32 } */
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/init-bad-3.c GCC/gcc/testsuite/gcc.dg/init-bad-3.c
--- GCC.orig/gcc/testsuite/gcc.dg/init-bad-3.c 2004-11-29 11:33:26.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/init-bad-3.c 2005-03-13 18:08:45.000000000 +0000
@@ -11,8 +11,8 @@ void h(a)
int a = 1; /* { dg-error "error: parameter 'a' is initialized" } */
{
struct s x = { 0 }; /* { dg-error "error: variable 'x' has initializer but incomplete type" } */
- /* { dg-error "excess elements|near init" "" { target *-*-* } 13 } */
- /* { dg-error "storage size" "" { target *-*-* } 13 } */
+ /* { dg-error "excess elements|near init" "near" { target *-*-* } 13 } */
+ /* { dg-error "storage size" "size" { target *-*-* } 13 } */
}
char s[1] = "x";
@@ -20,14 +20,14 @@ char s1[1] = { "x" };
char t[1] = "xy"; /* { dg-error "error: initializer-string for array of chars is too long" } */
char t1[1] = { "xy" }; /* { dg-error "error: initializer-string for array of chars is too long" } */
char u[1] = { "x", "x" }; /* { dg-error "error: excess elements in char array initializer" } */
-/* { dg-error "near init" "" { target *-*-* } 22 } */
+/* { dg-error "near init" "near" { target *-*-* } 22 } */
int j = { 1 };
int k = { 1, 2 }; /* { dg-error "error: excess elements in scalar initializer" } */
-/* { dg-error "near init" "" { target *-*-* } 27 } */
+/* { dg-error "near init" "near" { target *-*-* } 27 } */
int a1[1] = { [1] = 0 }; /* { dg-error "error: array index in initializer exceeds array bounds" } */
-/* { dg-error "near init" "" { target *-*-* } 30 } */
+/* { dg-error "near init" "near" { target *-*-* } 30 } */
int a2[1] = { [-1] = 0 }; /* { dg-error "error: array index in initializer exceeds array bounds" } */
-/* { dg-error "near init" "" { target *-*-* } 32 } */
+/* { dg-error "near init" "near" { target *-*-* } 32 } */
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/m-un-2.c GCC/gcc/testsuite/gcc.dg/m-un-2.c
--- GCC.orig/gcc/testsuite/gcc.dg/m-un-2.c 2004-09-12 23:48:33.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/m-un-2.c 2005-03-13 18:05:41.000000000 +0000
@@ -16,7 +16,7 @@ struct vtable mtable = {
malloc,
free
}; /* { dg-warning "missing initializer" "warning regression" { target *-*-* } {18} } */
- /* { dg-warning "initialization for 'mtable._realloc'" "warning regression" { target *-*-* } {18} } */
+ /* { dg-warning "initialization for 'mtable._realloc'" "warning regression 2" { target *-*-* } {18} } */
/* With designated initializers, we assume you meant to leave out the
initialization of any blank fields. */
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/parm-mismatch-1.c GCC/gcc/testsuite/gcc.dg/parm-mismatch-1.c
--- GCC.orig/gcc/testsuite/gcc.dg/parm-mismatch-1.c 2004-11-29 11:33:26.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/parm-mismatch-1.c 2005-03-13 18:06:46.000000000 +0000
@@ -6,13 +6,13 @@
void f0(); /* { dg-error "error: previous declaration of 'f0' was here" } */
void f0(int, ...); /* { dg-error "error: conflicting types for 'f0'" } */
-/* { dg-error "note: a parameter list with an ellipsis can't match an empty parameter name list declaration" "" { target *-*-* } 8 } */
+/* { dg-error "note: a parameter list with an ellipsis can't match an empty parameter name list declaration" "note" { target *-*-* } 8 } */
void f1(int, ...); /* { dg-error "error: previous declaration of 'f1' was here" } */
void f1(); /* { dg-error "error: conflicting types for 'f1'" } */
-/* { dg-error "note: a parameter list with an ellipsis can't match an empty parameter name list declaration" "" { target *-*-* } 11 } */
+/* { dg-error "note: a parameter list with an ellipsis can't match an empty parameter name list declaration" "note" { target *-*-* } 11 } */
void f2(); /* { dg-error "error: previous declaration of 'f2' was here" } */
void f2(char); /* { dg-error "error: conflicting types for 'f2'" } */
-/* { dg-error "note: an argument type that has a default promotion can't match an empty parameter name list declaration" "" { target *-*-* } 14 } */
+/* { dg-error "note: an argument type that has a default promotion can't match an empty parameter name list declaration" "note" { target *-*-* } 14 } */
void f3(char); /* { dg-error "error: previous declaration of 'f3' was here" } */
void f3(); /* { dg-error "error: conflicting types for 'f3'" } */
-/* { dg-error "note: an argument type that has a default promotion can't match an empty parameter name list declaration" "" { target *-*-* } 17 } */
+/* { dg-error "note: an argument type that has a default promotion can't match an empty parameter name list declaration" "note" { target *-*-* } 17 } */
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/redecl-1.c GCC/gcc/testsuite/gcc.dg/redecl-1.c
--- GCC.orig/gcc/testsuite/gcc.dg/redecl-1.c 2004-03-24 10:50:44.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/redecl-1.c 2005-03-13 18:06:01.000000000 +0000
@@ -94,7 +94,7 @@ static int test7(int x)
void prime8(void)
{
test8(); /* { dg-warning "previous" "" } */
- /* { dg-warning "implicit" "" { target *-*-* } 96 } */
+ /* { dg-warning "implicit" "implicit" { target *-*-* } 96 } */
}
static int test8(int x)
diff -rupN GCC.orig/gcc/testsuite/g++.dg/other/cv_func.C GCC/gcc/testsuite/g++.dg/other/cv_func.C
--- GCC.orig/gcc/testsuite/g++.dg/other/cv_func.C 2005-02-21 23:15:34.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/other/cv_func.C 2005-03-13 18:00:39.000000000 +0000
@@ -4,7 +4,7 @@ typedef int FIC(int) const;
typedef int FI(int);
FIC f; // { dg-error "qualified" }
-// { dg-error "ignoring" "" { target *-*-* } 6 }
+// { dg-error "ignoring" "ignoring" { target *-*-* } 6 }
struct S {
FIC f; // OK
@@ -15,7 +15,7 @@ struct S {
};
FIC S::*pm = &S::f;
const FI S::*pm2 = &S::f; // { dg-error "qualifier" }
-// { dg-error "cannot convert" "" { target *-*-* } 17 }
+// { dg-error "cannot convert" "cannot convert" { target *-*-* } 17 }
const FIC S::*pm3 = &S::f; // { dg-error "qualifier" }
int S::f(int) const
diff -rupN GCC.orig/gcc/testsuite/g++.dg/other/offsetof3.C GCC/gcc/testsuite/g++.dg/other/offsetof3.C
--- GCC.orig/gcc/testsuite/g++.dg/other/offsetof3.C 2003-06-09 17:13:06.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/other/offsetof3.C 2005-03-13 18:00:50.000000000 +0000
@@ -13,4 +13,4 @@ typedef X* pX;
typedef __SIZE_TYPE__ size_t;
size_t yoff = size_t(&(pX(0)->y)); /* { dg-warning "invalid access" "" } */
-/* { dg-warning "macro was used incorrectly" "" { target *-*-* } 15 } */
+/* { dg-warning "macro was used incorrectly" "macro" { target *-*-* } 15 } */
diff -rupN GCC.orig/gcc/testsuite/g++.dg/parse/error11.C GCC/gcc/testsuite/g++.dg/parse/error11.C
--- GCC.orig/gcc/testsuite/g++.dg/parse/error11.C 2004-01-29 04:26:50.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/parse/error11.C 2005-03-13 18:01:14.000000000 +0000
@@ -50,4 +50,4 @@ template struct Foo<::B>; // { dg-error
// On the first error message, an additional note about the use of
// -fpermissive should be present
-// { dg-error "-fpermissive" "" { target *-*-* } 18 }
+// { dg-error "-fpermissive" "-fpermissive" { target *-*-* } 18 }
diff -rupN GCC.orig/gcc/testsuite/g++.dg/tc1/dr108.C GCC/gcc/testsuite/g++.dg/tc1/dr108.C
--- GCC.orig/gcc/testsuite/g++.dg/tc1/dr108.C 2004-01-29 16:45:35.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/tc1/dr108.C 2005-03-13 18:01:28.000000000 +0000
@@ -12,4 +12,4 @@ template <class T> struct S {
};
// Additional notes on the same line are allowed
-// { dg-error "" "" { target *-*-* } 10 }
+// { dg-error "" "additional" { target *-*-* } 10 }
diff -rupN GCC.orig/gcc/testsuite/g++.dg/template/local4.C GCC/gcc/testsuite/g++.dg/template/local4.C
--- GCC.orig/gcc/testsuite/g++.dg/template/local4.C 2005-02-03 12:29:40.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/template/local4.C 2005-03-13 18:01:48.000000000 +0000
@@ -6,6 +6,6 @@ int main () {
struct S {};
// We do not simply use "local|match" on line 10 because we want to
// make sure that "local" appears.
- // { dg-error "local" "" { target *-*-* } 10 }
+ // { dg-error "local" "local" { target *-*-* } 10 }
foo<S> (); // { dg-error "trying|match" }
}
diff -rupN GCC.orig/gcc/testsuite/g++.dg/template/nontype6.C GCC/gcc/testsuite/g++.dg/template/nontype6.C
--- GCC.orig/gcc/testsuite/g++.dg/template/nontype6.C 2004-02-02 01:11:03.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/template/nontype6.C 2005-03-13 18:02:01.000000000 +0000
@@ -13,7 +13,7 @@ template <class T>
void func(void)
{
(void)A<T>::type(); // { dg-error "if a type is meant" }
-// { dg-error "parsed as a non-type" "" { target *-*-* } 15 }
+// { dg-error "parsed as a non-type" "non-type" { target *-*-* } 15 }
}
template void func<float>(void); // { dg-error "instantiated from here" }
diff -rupN GCC.orig/gcc/testsuite/g++.dg/warn/deprecated.C GCC/gcc/testsuite/g++.dg/warn/deprecated.C
--- GCC.orig/gcc/testsuite/g++.dg/warn/deprecated.C 2004-09-15 20:39:49.000000000 +0000
+++ GCC/gcc/testsuite/g++.dg/warn/deprecated.C 2005-03-13 18:05:08.000000000 +0000
@@ -53,10 +53,10 @@ int func1()
int (*pf)() = f1; /* { dg-warning "'f1' is deprecated" "" } */
z = w + x + y + g1 + g2 + g3; /* { dg-warning "'x' is deprecated" "" } */
- /* { dg-warning "'y' is deprecated" "" { target *-*-* } 55 } */
- /* { dg-warning "'g2' is deprecated" "" { target *-*-* } 55 } */
- /* { dg-warning "'g3' is deprecated" "" { target *-*-* } 55 } */
- return f1(); /* { dg-warning "'f1' is deprecated" "" } */
+ /* { dg-warning "'y' is deprecated" "y" { target *-*-* } 55 } */
+ /* { dg-warning "'g2' is deprecated" "g2" { target *-*-* } 55 } */
+ /* { dg-warning "'g3' is deprecated" "g3" { target *-*-* } 55 } */
+ return f1(); /* { dg-warning "'f1' is deprecated" "f1" } */
}
int func2(S1 *p)
@@ -71,7 +71,7 @@ int func2(S1 *p)
p->u1.field5 = g1 + p->field7;
p->u2.field9; /* { dg-warning "'u2' is deprecated" "" } */
return p->u1.field6 + p->field8; /* { dg-warning "'field6' is deprecated" "" } */
- /* { dg-warning "'field8' is deprecated" "" { target *-*-* } 73 } */
+ /* { dg-warning "'field8' is deprecated" "field8" { target *-*-* } 73 } */
}
struct SS1 {