aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2018-11-29 21:34:38 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2018-11-29 21:34:38 +0000
commiteedb990a499c893797d85d99b892cd8452d4ada4 (patch)
tree38b40efd84929d97a6bcee58611e6bae8bc948df
parent3ded6ffdfd75978712ed4d9b246fc47779b2d9d1 (diff)
downloadgcc-eedb990a499c893797d85d99b892cd8452d4ada4.zip
gcc-eedb990a499c893797d85d99b892cd8452d4ada4.tar.gz
gcc-eedb990a499c893797d85d99b892cd8452d4ada4.tar.bz2
decl.c (compute_array_index_type_loc): New, like the current compute_array_index_type but takes a location_t too.
/cp 2018-11-29 Paolo Carlini <paolo.carlini@oracle.com> * decl.c (compute_array_index_type_loc): New, like the current compute_array_index_type but takes a location_t too. (compute_array_index_type): Forward to the latter. (create_array_type_for_decl): Use compute_array_index_type_loc. /testsuite 2018-11-29 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/cpp0x/constexpr-base6b.C: New. * g++.dg/cpp0x/constexpr-47969.C: Test locations too. * g++.dg/cpp0x/constexpr-48324.C: Likewise. * g++.dg/cpp0x/constexpr-ex2.C: Likewise. * g++.dg/cpp0x/scoped_enum2.C: Likewise. * g++.dg/cpp1y/pr63996.C: Likewise. * g++.dg/ext/constexpr-vla5.C: Likewise. * g++.dg/ext/stmtexpr15.C: Likewise. * g++.dg/ext/vla1.C: Likewise. * g++.dg/other/fold1.C: Likewise. * g++.dg/parse/array-size2.C: Likewise. * g++.dg/parse/crash36.C: Likewise. * g++.dg/ubsan/pr81530.C: Likewise. * g++.dg/warn/Wvla-1.C: Likewise. * g++.dg/warn/Wvla-2.C: Likewise. * g++.old-deja/g++.brendan/array1.C: Likewise. * g++.old-deja/g++.bugs/900402_02.C: Likewise. * g++.old-deja/g++.law/init3.C: Likewise. * g++.old-deja/g++.mike/p6149.C: Likewise. From-SVN: r266645
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/decl.c58
-rw-r--r--gcc/testsuite/ChangeLog22
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-47969.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-48324.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-base6b.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-ex2.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/scoped_enum2.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/pr63996.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/constexpr-vla5.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/stmtexpr15.C3
-rw-r--r--gcc/testsuite/g++.dg/ext/vla1.C5
-rw-r--r--gcc/testsuite/g++.dg/other/fold1.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/array-size2.C4
-rw-r--r--gcc/testsuite/g++.dg/parse/crash36.C2
-rw-r--r--gcc/testsuite/g++.dg/ubsan/pr81530.C2
-rw-r--r--gcc/testsuite/g++.dg/warn/Wvla-1.C2
-rw-r--r--gcc/testsuite/g++.dg/warn/Wvla-2.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.brendan/array1.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.bugs/900402_02.C8
-rw-r--r--gcc/testsuite/g++.old-deja/g++.law/init3.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/p6149.C2
22 files changed, 110 insertions, 42 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 853e139..98a2528 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2018-11-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (compute_array_index_type_loc): New, like the current
+ compute_array_index_type but takes a location_t too.
+ (compute_array_index_type): Forward to the latter.
+ (create_array_type_for_decl): Use compute_array_index_type_loc.
+
2018-11-29 David Malcolm <dmalcolm@redhat.com>
PR c++/88121
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 3734bfe..7d2c599 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -9621,8 +9621,9 @@ fold_sizeof_expr (tree t)
an appropriate index type for the array. If non-NULL, NAME is
the name of the entity being declared. */
-tree
-compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
+static tree
+compute_array_index_type_loc (location_t name_loc, tree name, tree size,
+ tsubst_flags_t complain)
{
tree itype;
tree osize = size;
@@ -9630,6 +9631,8 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
if (error_operand_p (size))
return error_mark_node;
+ location_t loc = cp_expr_loc_or_loc (size, name ? name_loc : input_location);
+
if (!type_dependent_expression_p (size))
{
osize = size = mark_rvalue_use (size);
@@ -9658,9 +9661,10 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
if (!(complain & tf_error))
return error_mark_node;
if (name)
- error ("size of array %qD has non-integral type %qT", name, type);
+ error_at (loc, "size of array %qD has non-integral type %qT",
+ name, type);
else
- error ("size of array has non-integral type %qT", type);
+ error_at (loc, "size of array has non-integral type %qT", type);
size = integer_one_node;
}
}
@@ -9689,8 +9693,14 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
{
tree folded = cp_fully_fold (size);
if (TREE_CODE (folded) == INTEGER_CST)
- pedwarn (input_location, OPT_Wpedantic,
- "size of array is not an integral constant-expression");
+ {
+ if (name)
+ pedwarn (loc, OPT_Wpedantic, "size of array %qD is not an "
+ "integral constant-expression", name);
+ else
+ pedwarn (loc, OPT_Wpedantic,
+ "size of array is not an integral constant-expression");
+ }
/* Use the folded result for VLAs, too; it will have resolved
SIZEOF_EXPR. */
size = folded;
@@ -9706,9 +9716,9 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
return error_mark_node;
if (name)
- error ("size of array %qD is negative", name);
+ error_at (loc, "size of array %qD is negative", name);
else
- error ("size of array is negative");
+ error_at (loc, "size of array is negative");
size = integer_one_node;
}
/* As an extension we allow zero-sized arrays. */
@@ -9722,9 +9732,11 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
else if (in_system_header_at (input_location))
/* Allow them in system headers because glibc uses them. */;
else if (name)
- pedwarn (input_location, OPT_Wpedantic, "ISO C++ forbids zero-size array %qD", name);
+ pedwarn (loc, OPT_Wpedantic,
+ "ISO C++ forbids zero-size array %qD", name);
else
- pedwarn (input_location, OPT_Wpedantic, "ISO C++ forbids zero-size array");
+ pedwarn (loc, OPT_Wpedantic,
+ "ISO C++ forbids zero-size array");
}
}
else if (TREE_CONSTANT (size)
@@ -9737,24 +9749,27 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
return error_mark_node;
/* `(int) &fn' is not a valid array bound. */
if (name)
- error ("size of array %qD is not an integral constant-expression",
- name);
+ error_at (loc,
+ "size of array %qD is not an integral constant-expression",
+ name);
else
- error ("size of array is not an integral constant-expression");
+ error_at (loc, "size of array is not an integral constant-expression");
size = integer_one_node;
}
else if (pedantic && warn_vla != 0)
{
if (name)
- pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array %qD", name);
+ pedwarn (name_loc, OPT_Wvla,
+ "ISO C++ forbids variable length array %qD", name);
else
- pedwarn (input_location, OPT_Wvla, "ISO C++ forbids variable length array");
+ pedwarn (input_location, OPT_Wvla,
+ "ISO C++ forbids variable length array");
}
else if (warn_vla > 0)
{
if (name)
- warning (OPT_Wvla,
- "variable length array %qD is used", name);
+ warning_at (name_loc, OPT_Wvla,
+ "variable length array %qD is used", name);
else
warning (OPT_Wvla,
"variable length array is used");
@@ -9821,6 +9836,12 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
return itype;
}
+tree
+compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
+{
+ return compute_array_index_type_loc (input_location, name, size, complain);
+}
+
/* Returns the scope (if any) in which the entity declared by
DECLARATOR will be located. If the entity was declared with an
unqualified name, NULL_TREE is returned. */
@@ -9922,7 +9943,8 @@ create_array_type_for_decl (tree name, tree type, tree size, location_t loc)
/* Figure out the index type for the array. */
if (size)
- itype = compute_array_index_type (name, size, tf_warning_or_error);
+ itype = compute_array_index_type_loc (loc, name, size,
+ tf_warning_or_error);
/* [dcl.array]
T is called the array element type; this type shall not be [...] an
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7c760da..937e0ad 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,25 @@
+2018-11-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * g++.dg/cpp0x/constexpr-base6b.C: New.
+ * g++.dg/cpp0x/constexpr-47969.C: Test locations too.
+ * g++.dg/cpp0x/constexpr-48324.C: Likewise.
+ * g++.dg/cpp0x/constexpr-ex2.C: Likewise.
+ * g++.dg/cpp0x/scoped_enum2.C: Likewise.
+ * g++.dg/cpp1y/pr63996.C: Likewise.
+ * g++.dg/ext/constexpr-vla5.C: Likewise.
+ * g++.dg/ext/stmtexpr15.C: Likewise.
+ * g++.dg/ext/vla1.C: Likewise.
+ * g++.dg/other/fold1.C: Likewise.
+ * g++.dg/parse/array-size2.C: Likewise.
+ * g++.dg/parse/crash36.C: Likewise.
+ * g++.dg/ubsan/pr81530.C: Likewise.
+ * g++.dg/warn/Wvla-1.C: Likewise.
+ * g++.dg/warn/Wvla-2.C: Likewise.
+ * g++.old-deja/g++.brendan/array1.C: Likewise.
+ * g++.old-deja/g++.bugs/900402_02.C: Likewise.
+ * g++.old-deja/g++.law/init3.C: Likewise.
+ * g++.old-deja/g++.mike/p6149.C: Likewise.
+
2018-11-29 David Malcolm <dmalcolm@redhat.com>
PR c++/88121
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-47969.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-47969.C
index 201ee17..bfd9d8f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-47969.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-47969.C
@@ -8,4 +8,5 @@ struct A
constexpr A a = A();
-int ar[a]; // { dg-error "could not convert|has non-integral type" }
+int ar[a]; // { dg-error "could not convert" }
+// { dg-error "5:size of array .ar. has non-integral" "" { target c++11 } .-1 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-48324.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-48324.C
index cef464c..37ed0e1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-48324.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-48324.C
@@ -10,4 +10,4 @@ constexpr const int& to_ref(int i) {
return S(i).val; // { dg-warning "reference to temporary" }
}
-constexpr int ary[to_ref(98)] = { }; // { dg-error "not an integral" }
+constexpr int ary[to_ref(98)] = { }; // { dg-error "25:size of array .ary. is not an integral" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-base6b.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-base6b.C
new file mode 100644
index 0000000..13fa889
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-base6b.C
@@ -0,0 +1,13 @@
+// CWG issue 2310
+// { dg-do compile { target c++11 } }
+
+template<typename A, typename B> struct check_derived_from {
+ static A a;
+ static constexpr B *p = &a; // { dg-error "cannot convert" }
+ int ar[p-p+1]; // { dg-error "13:size of array is not an integral constant-expression" }
+};
+struct W { int i; };
+struct Z : W
+{
+ check_derived_from<Z, W> cdf;
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ex2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ex2.C
index ceae9cb..e726a34 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ex2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ex2.C
@@ -18,5 +18,5 @@ constexpr A a = 42;
X<a> x; // OK: unique conversion to int
int ar[X<a>::i]; // also OK
-int ary[a]; // { dg-error "could not convert|ambiguous|conversion|array" } ambiguous conversion
-
+int ary[a]; // { dg-error "could not convert" } ambiguous conversion
+// { dg-error "5:size of array .ary. has non-integral" "" { target c++11 } .-1 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/scoped_enum2.C b/gcc/testsuite/g++.dg/cpp0x/scoped_enum2.C
index 456b0da..0313c01 100644
--- a/gcc/testsuite/g++.dg/cpp0x/scoped_enum2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/scoped_enum2.C
@@ -4,7 +4,8 @@ enum class E { e = 10 };
enum E2 { e2 = 10 };
struct C {
- int arr[E::e]; // { dg-error "could not convert|non-integral type" }
+ int arr[E::e]; // { dg-error "could not convert" }
+// { dg-error "7:size of array .arr. has non-integral" "" { target c++11 } .-1 }
int arr2[E2::e2]; // OK
int i: E::e; // { dg-error "could not convert|non-integral type" }
int i2: E2::e2; // OK
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr63996.C b/gcc/testsuite/g++.dg/cpp1y/pr63996.C
index 2e8cab5..fe47544 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr63996.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr63996.C
@@ -4,7 +4,7 @@
constexpr int
foo (int i)
{
- int a[i] = { }; // { dg-error "forbids variable length" }
+ int a[i] = { }; // { dg-error "7:ISO C\\+\\+ forbids variable length array .a" }
}
constexpr int j = foo (1); // { dg-error "flows off the end|in .constexpr. expansion of" }
diff --git a/gcc/testsuite/g++.dg/ext/constexpr-vla5.C b/gcc/testsuite/g++.dg/ext/constexpr-vla5.C
index 5f19d3c..7cedc94 100644
--- a/gcc/testsuite/g++.dg/ext/constexpr-vla5.C
+++ b/gcc/testsuite/g++.dg/ext/constexpr-vla5.C
@@ -4,5 +4,5 @@
void foo(int i)
{
constexpr char x[i] = ""; // { dg-error "18:.constexpr. variable .x. has variably-modified type" }
-// { dg-error "ISO C\\+\\+ forbids variable length array .x" "" { target c++11 } .-1 }
+// { dg-error "18:ISO C\\+\\+ forbids variable length array .x" "" { target c++11 } .-1 }
}
diff --git a/gcc/testsuite/g++.dg/ext/stmtexpr15.C b/gcc/testsuite/g++.dg/ext/stmtexpr15.C
index 1a60a0d..10c4886 100644
--- a/gcc/testsuite/g++.dg/ext/stmtexpr15.C
+++ b/gcc/testsuite/g++.dg/ext/stmtexpr15.C
@@ -3,5 +3,6 @@
void foo()
{
- int x[({ return; })]; // { dg-error "could not convert|non-integral" }
+ int x[({ return; })]; // { dg-error "could not convert" }
+// { dg-error "12:size of array .x. has non-integral" "" { target *-*-* } .-1 }
}
diff --git a/gcc/testsuite/g++.dg/ext/vla1.C b/gcc/testsuite/g++.dg/ext/vla1.C
index 55ae5c8..d6df686 100644
--- a/gcc/testsuite/g++.dg/ext/vla1.C
+++ b/gcc/testsuite/g++.dg/ext/vla1.C
@@ -9,7 +9,7 @@ class A { A (int); };
A::A (int i)
{
- int ar[1][i]; // { dg-error "array" }
+ int ar[1][i]; // { dg-error "7:ISO C\\+\\+ forbids variable length array .ar" }
ar[0][0] = 0;
}
@@ -19,7 +19,8 @@ class B { B (int); };
B::B (int i)
{
struct S {
- int ar[1][i]; // { dg-error "array" }
+ int ar[1][i]; // { dg-error "9:size of array .ar. is not an integral" "" { target c++11 } }
+// { dg-error "array bound" "" { target c++98_only } .-1 }
} s;
s.ar[0][0] = 0; // { dg-prune-output "no member" }
diff --git a/gcc/testsuite/g++.dg/other/fold1.C b/gcc/testsuite/g++.dg/other/fold1.C
index bf07403..25f9acc 100644
--- a/gcc/testsuite/g++.dg/other/fold1.C
+++ b/gcc/testsuite/g++.dg/other/fold1.C
@@ -4,5 +4,5 @@
struct A
{
static const int i = i; // { dg-error "not declared" }
- int x[i]; // { dg-error "constant-expression|narrowing conversion" }
+ int x[i]; // { dg-error "9:size of array .x. is not an integral constant-expression" }
};
diff --git a/gcc/testsuite/g++.dg/parse/array-size2.C b/gcc/testsuite/g++.dg/parse/array-size2.C
index 997b95e..e58fe26 100644
--- a/gcc/testsuite/g++.dg/parse/array-size2.C
+++ b/gcc/testsuite/g++.dg/parse/array-size2.C
@@ -14,7 +14,7 @@ extern void bar (char *, char *);
void
foo (void)
{
- char g[(char *) &((struct S *) 0)->b - (char *) 0]; // { dg-error "constant|narrowing conversion" }
- char h[(__SIZE_TYPE__) &((struct S *) 8)->b]; // { dg-error "constant" }
+ char g[(char *) &((struct S *) 0)->b - (char *) 0]; // { dg-error "40:size of array .g. is not an integral constant-expression" }
+ char h[(__SIZE_TYPE__) &((struct S *) 8)->b]; // { dg-error "10:size of array .h. is not an integral constant-expression" }
bar (g, h);
}
diff --git a/gcc/testsuite/g++.dg/parse/crash36.C b/gcc/testsuite/g++.dg/parse/crash36.C
index 4b2384c..14fcdd8 100644
--- a/gcc/testsuite/g++.dg/parse/crash36.C
+++ b/gcc/testsuite/g++.dg/parse/crash36.C
@@ -9,4 +9,4 @@ template <typename... T> struct A // { dg-warning "variadic templates" }
static const int i = sizeof (++t); // { dg-error "was not declared in this scope" }
};
-int x[A <int>::i]; // { dg-error "constant-expression" }
+int x[A <int>::i]; // { dg-error "5:size of array .x. is not an integral constant-expression" }
diff --git a/gcc/testsuite/g++.dg/ubsan/pr81530.C b/gcc/testsuite/g++.dg/ubsan/pr81530.C
index 1fbbaa9..310ea8e 100644
--- a/gcc/testsuite/g++.dg/ubsan/pr81530.C
+++ b/gcc/testsuite/g++.dg/ubsan/pr81530.C
@@ -2,4 +2,4 @@
/* { dg-do compile } */
/* { dg-options "-fsanitize=undefined" } */
-int a[(long) 4e20]; /* { dg-error "size of array .a. is (too large|negative)" } */
+int a[(long) 4e20]; /* { dg-error "7:size of array .a. is (too large|negative)" } */
diff --git a/gcc/testsuite/g++.dg/warn/Wvla-1.C b/gcc/testsuite/g++.dg/warn/Wvla-1.C
index 5d261fc..95e452d 100644
--- a/gcc/testsuite/g++.dg/warn/Wvla-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wvla-1.C
@@ -4,5 +4,5 @@
void func (int i)
{
- int array[i]; /* { dg-warning "variable length array 'array' is used" } */
+ int array[i]; /* { dg-warning "7:variable length array 'array' is used" } */
}
diff --git a/gcc/testsuite/g++.dg/warn/Wvla-2.C b/gcc/testsuite/g++.dg/warn/Wvla-2.C
index eacd212..02092b8 100644
--- a/gcc/testsuite/g++.dg/warn/Wvla-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wvla-2.C
@@ -3,5 +3,5 @@
void func (int i)
{
- int array[i]; /* { dg-error "ISO C.* forbids variable.* array 'array'" } */
+ int array[i]; /* { dg-error "7:ISO C.* forbids variable.* array 'array'" } */
}
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/array1.C b/gcc/testsuite/g++.old-deja/g++.brendan/array1.C
index d2084f6..d6957cd 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/array1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/array1.C
@@ -2,5 +2,5 @@
// GROUPS passed array-bindings
extern "C" int printf (const char *, ...);
-char array[~(~((__SIZE_TYPE__)0ul)>>1)|~(((__SIZE_TYPE__)0ul)>>3)]; // { dg-error "" } overflow in array dimension.*
+char array[~(~((__SIZE_TYPE__)0ul)>>1)|~(((__SIZE_TYPE__)0ul)>>3)]; // { dg-error "39:size of array .array. is negative" } overflow in array dimension.*
int main () { printf ("PASS\n"); return 0; }
diff --git a/gcc/testsuite/g++.old-deja/g++.bugs/900402_02.C b/gcc/testsuite/g++.old-deja/g++.bugs/900402_02.C
index d3cf5ad..46a3ec3 100644
--- a/gcc/testsuite/g++.old-deja/g++.bugs/900402_02.C
+++ b/gcc/testsuite/g++.old-deja/g++.bugs/900402_02.C
@@ -6,17 +6,17 @@
// keywords: arrays, array bound, zero length
-typedef int array_type[0]; // { dg-error "zero-size array" }
+typedef int array_type[0]; // { dg-error "13:ISO C\\+\\+ forbids zero-size array" }
-int array_object_1[0]; // { dg-error "zero-size array" }
+int array_object_1[0]; // { dg-error "5:ISO C\\+\\+ forbids zero-size array" }
-void function_0 (int formal_array[0]) // { dg-error "zero-size array" }
+void function_0 (int formal_array[0]) // { dg-error "22:ISO C\\+\\+ forbids zero-size array" }
{
}
void function_2 ()
{
- int local_object_array_0[0]; // { dg-error "zero-size array" }
+ int local_object_array_0[0]; // { dg-error "7:ISO C\\+\\+ forbids zero-size array" }
}
int main () { return 0; }
diff --git a/gcc/testsuite/g++.old-deja/g++.law/init3.C b/gcc/testsuite/g++.old-deja/g++.law/init3.C
index 92f4ed7..197d37f 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/init3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/init3.C
@@ -8,5 +8,5 @@
int main() {
int offset;
-char buf[offset]=""; // { dg-error "" } ansi forbids variable arrays
+char buf[offset]=""; // { dg-error "6:ISO C\\+\\+ forbids variable length array .buf" } ansi forbids variable arrays
}
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p6149.C b/gcc/testsuite/g++.old-deja/g++.mike/p6149.C
index d7b8196..4cb18948 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p6149.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p6149.C
@@ -1,4 +1,4 @@
// { dg-do assemble }
// prms-id: 6149
-int a[3 - sizeof(double)]; // { dg-error "" }
+int a[3 - sizeof(double)]; // { dg-error "9:size of array .a. is negative" }