diff options
Diffstat (limited to 'gcc-4.8/gcc/testsuite/g++.old-deja/g++.bugs/900519_06.C')
-rw-r--r-- | gcc-4.8/gcc/testsuite/g++.old-deja/g++.bugs/900519_06.C | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc-4.8/gcc/testsuite/g++.old-deja/g++.bugs/900519_06.C b/gcc-4.8/gcc/testsuite/g++.old-deja/g++.bugs/900519_06.C new file mode 100644 index 000000000..601e4aab3 --- /dev/null +++ b/gcc-4.8/gcc/testsuite/g++.old-deja/g++.bugs/900519_06.C @@ -0,0 +1,23 @@ +// { dg-do assemble } +// g++ 1.37.1 bug 900519_06 + +// g++ allows the type given in an invocation of operator new to be a +// reference type. + +// Since pointers to reference types are illegal, the required return type +// from such an invocation (of operator new) is illegal, and thus (it seems) +// the entire call to new should be treated as being illegal. + +typedef int& int_ref; + +void test (int n) +{ + new int&; // { dg-error "" } missed + new int_ref; // { dg-error "" } missed + new int&[n]; // { dg-error "" } missed + new int_ref[n]; // { dg-error "" } missed + new int&[3]; // { dg-error "" } missed + new int_ref[3]; // { dg-error "" } missed +} + +int main () { return 0; } |