diff options
author | Richard Guenther <rguenther@suse.de> | 2008-01-04 11:16:17 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-01-04 11:16:17 +0000 |
commit | 9e9f7b9c19c168689a59caa4c7a5acd00b86c75d (patch) | |
tree | a690fb590422323d03bb0cc0be42dc58cb9cfb29 | |
parent | 5e96e6c04bd61928c4e4a25f1c030ab31976a844 (diff) | |
download | gcc-9e9f7b9c19c168689a59caa4c7a5acd00b86c75d.zip gcc-9e9f7b9c19c168689a59caa4c7a5acd00b86c75d.tar.gz gcc-9e9f7b9c19c168689a59caa4c7a5acd00b86c75d.tar.bz2 |
re PR tree-optimization/31081 (Inliner messes up SSA for abnormals)
2008-01-04 Richard Guenther <rguenther@suse.de>
PR tree-optimization/31081
* g++.dg/torture/pr31081-1.C: New testcase.
* g++.dg/torture/pr31081-2.C: Likewise.
From-SVN: r131320
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr31081-1.C | 23 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr31081-2.C | 48 |
3 files changed, 77 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c027dba..5cbb424 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2008-01-04 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/31081 + * g++.dg/torture/pr31081-1.C: New testcase. + * g++.dg/torture/pr31081-2.C: Likewise. + 2008-01-04 Richard Sandiford <rsandifo@nildram.co.uk> * gcc.target/mips/rsqrt-1.c: Require -mgp64. diff --git a/gcc/testsuite/g++.dg/torture/pr31081-1.C b/gcc/testsuite/g++.dg/torture/pr31081-1.C new file mode 100644 index 0000000..cb11b21 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr31081-1.C @@ -0,0 +1,23 @@ +/* { dg-do compile } */ + +static int get_record (void); +void f(void); +int g(void); +static int get_record (void) +{ + int result; + try + { + result = g(); + f(); + } + catch (const int &) { } + return result; +} +int NAV_get_record ( ) +{ + int result; + for (;;) + if (get_record ()) + return 1; +} diff --git a/gcc/testsuite/g++.dg/torture/pr31081-2.C b/gcc/testsuite/g++.dg/torture/pr31081-2.C new file mode 100644 index 0000000..a14ef37 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr31081-2.C @@ -0,0 +1,48 @@ +/* { dg-do compile } */ + +class CString +{ +public: + CString(); + ~CString() { operator delete(_rep); } + operator const char*() const { return _rep; } +private: + CString(char* cstr); + char* _rep; +}; + +class String +{ +public: + + String(); + String(const char* str); + ~String(); + CString getCString() const; +}; + +int is_absolute_path(const char *path); + +inline void getAbsolutePath( + const char* path, + const String& filename) +{ + (!is_absolute_path(filename.getCString()) && path); + return; +} + +int foo(int &value); + +int main(int argc, char** argv) +{ + int repeatTestCount = 0; + if (foo(repeatTestCount)) + { + repeatTestCount = 1; + } + for (int numTests = 1; numTests <= repeatTestCount; numTests++) + { + getAbsolutePath("blah", "blah"); + } + return 0; +} |