diff options
author | Dirk Mueller <dmueller@suse.de> | 2007-06-14 23:12:25 +0000 |
---|---|---|
committer | Dirk Mueller <mueller@gcc.gnu.org> | 2007-06-14 23:12:25 +0000 |
commit | bf37bd88855729f86341fd5cb4870e1e60db07ee (patch) | |
tree | c67513620a1489c02255676ae24d29e44aa7af28 | |
parent | 5eafdd32daa76b989be4386ab641ac6be6034ee0 (diff) | |
download | gcc-bf37bd88855729f86341fd5cb4870e1e60db07ee.zip gcc-bf37bd88855729f86341fd5cb4870e1e60db07ee.tar.gz gcc-bf37bd88855729f86341fd5cb4870e1e60db07ee.tar.bz2 |
re PR c++/31806 (miscompilation with -fschedule-insns2 -fno-threadsafe-statics)
2007-06-14 Dirk Mueller <dmueller@suse.de>
PR c++/31806
* g++.dg/opt/static6.C: New testcase.
From-SVN: r125726
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/opt/static6.C | 35 |
2 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 08bc5ad..48163ba 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-06-14 Dirk Mueller <dmueller@suse.de> + + PR c++/31806 + * g++.dg/opt/static6.C: New testcase. + 2007-06-14 Geoff Keating <geoffk@apple.com> * 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 0000000..00e76fb --- /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; +} |