From bf37bd88855729f86341fd5cb4870e1e60db07ee Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Thu, 14 Jun 2007 23:12:25 +0000 Subject: [PATCH] re PR c++/31806 (miscompilation with -fschedule-insns2 -fno-threadsafe-statics) 2007-06-14 Dirk Mueller PR c++/31806 * g++.dg/opt/static6.C: New testcase. From-SVN: r125726 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/opt/static6.C | 35 ++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 gcc/testsuite/g++.dg/opt/static6.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 08bc5ada04d..48163ba05bd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-06-14 Dirk Mueller + + PR c++/31806 + * g++.dg/opt/static6.C: New testcase. + 2007-06-14 Geoff Keating * g++.dg/ext/visibility/overload-1.C: New. diff --git a/gcc/testsuite/g++.dg/opt/static6.C b/gcc/testsuite/g++.dg/opt/static6.C new file mode 100644 index 00000000000..00e76fb7350 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/static6.C @@ -0,0 +1,35 @@ +// PR c++/31806 +// { dg-do run } +// { dg-options "-O2 -fno-inline -fno-threadsafe-statics" } + +extern "C" void abort(void); + +struct A +{ + void *d; +}; + +static const A& staticA() +{ + static A s_static; + return s_static; +} + +void assert_failed() +{ + abort(); +} + +A testMethod() +{ + static const A& s = staticA( ); + if (&s == 0) + assert_failed(); + return s; +} + +int main() +{ + testMethod(); + return 0; +} -- 2.30.2