From f606d2f1d47d03f8a20cb2cb041d98b6de5d0a56 Mon Sep 17 00:00:00 2001 From: jason Date: Tue, 24 Jul 2001 15:08:37 +0000 Subject: [PATCH] move to subdirs git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44301 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/g++.dg/abi/mangle2.C | 19 +++++++++ gcc/testsuite/g++.dg/ext/instantiate1.C | 32 +++++++++++++++ gcc/testsuite/g++.dg/ext/lvalue1.C | 10 +++++ gcc/testsuite/g++.dg/opt/nrv1.C | 28 ++++++++++++++ gcc/testsuite/g++.dg/other/init-ref1.C | 45 ++++++++++++++++++++++ gcc/testsuite/g++.dg/other/init-ref2.C | 42 ++++++++++++++++++++ gcc/testsuite/g++.dg/{ => other}/stdbool-if.C | 0 .../g++.dg/{friend-warn.C => warn/friend.C} | 0 8 files changed, 176 insertions(+) create mode 100644 gcc/testsuite/g++.dg/abi/mangle2.C create mode 100644 gcc/testsuite/g++.dg/ext/instantiate1.C create mode 100644 gcc/testsuite/g++.dg/ext/lvalue1.C create mode 100644 gcc/testsuite/g++.dg/opt/nrv1.C create mode 100644 gcc/testsuite/g++.dg/other/init-ref1.C create mode 100644 gcc/testsuite/g++.dg/other/init-ref2.C rename gcc/testsuite/g++.dg/{ => other}/stdbool-if.C (100%) rename gcc/testsuite/g++.dg/{friend-warn.C => warn/friend.C} (100%) diff --git a/gcc/testsuite/g++.dg/abi/mangle2.C b/gcc/testsuite/g++.dg/abi/mangle2.C new file mode 100644 index 0000000..e8b5f40 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/mangle2.C @@ -0,0 +1,19 @@ +// Test that we handle mangling of statics in inlines properly. +// { dg-options -fno-weak } +// { dg-do run } + +inline int f () +{ + static int nested; + nested = 24; + { + static int nested; + nested = 42; + } + return (nested != 24); +} + +int main() +{ + return f (); +} diff --git a/gcc/testsuite/g++.dg/ext/instantiate1.C b/gcc/testsuite/g++.dg/ext/instantiate1.C new file mode 100644 index 0000000..90a4af0 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/instantiate1.C @@ -0,0 +1,32 @@ +// Test that 'extern template' suppresses instantiations. +// { dg-do link } +// { dg-options "" } + +template void f (T) { } +extern template void f (int); + +template struct A { + void f (); +}; +template void A::f () { } +extern template struct A; + +// { dg-error "void f\\(int\\)" "suppressing f" { target *-*-* } "0" } +void test_f_int () { f(42); } + +// { dg-error "A::f\\(\\)" "suppressing A" { target *-*-* } "0" } +void test_A_int_f () { A a; a.f (); } + +// { dg-bogus "void f\\(double\\)" "f" { target *-*-* } "0" } +void test_f_double () { f (2.0); } + +// { dg-bogus "A::f\\(\\)" "A" { target *-*-* } "0" } +void test_A_double_f () { A b; b.f (); } + +int main () +{ + test_f_int (); + test_A_int_f (); + test_f_double (); + test_A_double_f (); +} diff --git a/gcc/testsuite/g++.dg/ext/lvalue1.C b/gcc/testsuite/g++.dg/ext/lvalue1.C new file mode 100644 index 0000000..bf883ea --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/lvalue1.C @@ -0,0 +1,10 @@ +// Test that we complain about the gcc cast-as-lvalue extension. + +int main () +{ + char c; + + static_cast(c) = 2; // { dg-error "lvalue" "not an lvalue" } + + return c != 2; +} diff --git a/gcc/testsuite/g++.dg/opt/nrv1.C b/gcc/testsuite/g++.dg/opt/nrv1.C new file mode 100644 index 0000000..cba1625 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/nrv1.C @@ -0,0 +1,28 @@ +// Test for the named return value optimization. +// { dg-do run } +// { dg-options -fno-inline } + +int c; +int d; + +struct A +{ + A() { ++c; } + A(const A&) { ++c; }; + ~A() { ++d; } +}; + +inline A f () +{ + A a; + return a; +} + +int main () +{ + { + A a = f (); + } + + return !(c == 1 && c == d); +} diff --git a/gcc/testsuite/g++.dg/other/init-ref1.C b/gcc/testsuite/g++.dg/other/init-ref1.C new file mode 100644 index 0000000..d0170cd --- /dev/null +++ b/gcc/testsuite/g++.dg/other/init-ref1.C @@ -0,0 +1,45 @@ +// Submitted by Erik Rozendaal +// Test case for GNATS bug 787. +// { dg-do run } + +#include +#include + +static int calls; + +int &foo (int &arg) +{ + calls++; + arg=0; + return arg; +} + +int &identity (int &x) +{ + return x; +} + +int main() +{ + int a; + + calls = 0; + int &b = ++foo (a); + if (calls > 1) + abort (); + if (&a != &b) + abort (); + if (a != 1) + abort (); + + calls = 0; + int &c = ++identity (++foo (a)); + if (calls > 1) + abort (); + if (&a != &c) + abort (); + if (a != 2) + abort (); + + exit (0); +} diff --git a/gcc/testsuite/g++.dg/other/init-ref2.C b/gcc/testsuite/g++.dg/other/init-ref2.C new file mode 100644 index 0000000..6d9448a --- /dev/null +++ b/gcc/testsuite/g++.dg/other/init-ref2.C @@ -0,0 +1,42 @@ +// Submitted by Jason Merrill +// Test for proper handling of local static references. +// { dg-do run } + +int r; + +int c; +int f () +{ + // Test that we only initialize i once. + if (++c > 1) + ++r; + return 42; +} + +const int *p; +void g () +{ + static const int &i = f(); + + // Test that i points to the same place in both calls. + if (p && p != &i) + ++r; + // Test that if so, it points to static data. + if (i != 42) + ++r; + + p = &i; +} + +void h () +{ + int arr[] = { 1, 1, 1, 1, 1, 1, 1 }; + g (); +} + +int main () +{ + g (); + h (); + return r; +} diff --git a/gcc/testsuite/g++.dg/stdbool-if.C b/gcc/testsuite/g++.dg/other/stdbool-if.C similarity index 100% rename from gcc/testsuite/g++.dg/stdbool-if.C rename to gcc/testsuite/g++.dg/other/stdbool-if.C diff --git a/gcc/testsuite/g++.dg/friend-warn.C b/gcc/testsuite/g++.dg/warn/friend.C similarity index 100% rename from gcc/testsuite/g++.dg/friend-warn.C rename to gcc/testsuite/g++.dg/warn/friend.C -- 2.7.4