diff options
author | Andrew Pinski <pinskia@gcc.gnu.org> | 2009-09-20 13:05:00 -0700 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2009-09-20 13:05:00 -0700 |
commit | 15651f0bbd11937ec3b035a8c219744436113586 (patch) | |
tree | ee735cfa14ff6a5dc80e37e189c52b79327d6946 /gcc | |
parent | 1dbb24a3f3bddb4d6934c9bf36311ecd2e608660 (diff) | |
download | gcc-15651f0bbd11937ec3b035a8c219744436113586.zip gcc-15651f0bbd11937ec3b035a8c219744436113586.tar.gz gcc-15651f0bbd11937ec3b035a8c219744436113586.tar.bz2 |
re PR tree-optimization/40642 (ICE with -fprofile-generate)
2009-09-20 Andrew Pinski <pinskia@gcc.gnu.org>
PR middle-end/40642
* g++.dg/torture/pr40642.C: New testcase.
From-SVN: r151907
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr40642.C | 26 |
2 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 127d213..5dd2a72 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-09-20 Andrew Pinski <pinskia@gcc.gnu.org> + + PR middle-end/40642 + * g++.dg/torture/pr40642.C: New testcase. + 2009-09-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * gcc.dg/torture/builtin-math-7.c: Update for testing Annex G diff --git a/gcc/testsuite/g++.dg/torture/pr40642.C b/gcc/testsuite/g++.dg/torture/pr40642.C new file mode 100644 index 0000000..3f545a8 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr40642.C @@ -0,0 +1,26 @@ +// { dg-do compile } +// { dg-options "-fprofile-generate" } + +// GCC used to ICE with some EH edge missing. + +inline void* operator new(__SIZE_TYPE__, void* p) throw() { return p; } +inline void operator delete (void*, void*) throw() { } + +template<typename T> void foo(void* p, T t) +{ + new(p) T(t); +} + +void bar(); + +template<typename T> struct A +{ + T* p; + + A() { try { foo(p, T()); } catch(...) {} } + + A(const A&) { try { bar(); } catch(...) { throw; } } +}; + +A<A<int> > a; + |