From: Richard Guenther Date: Fri, 4 Jan 2008 11:16:17 +0000 (+0000) Subject: re PR tree-optimization/31081 (Inliner messes up SSA for abnormals) X-Git-Tag: releases/gcc-4.3.0~755 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9e9f7b9c19c168689a59caa4c7a5acd00b86c75d;p=thirdparty%2Fgcc.git re PR tree-optimization/31081 (Inliner messes up SSA for abnormals) 2008-01-04 Richard Guenther PR tree-optimization/31081 * g++.dg/torture/pr31081-1.C: New testcase. * g++.dg/torture/pr31081-2.C: Likewise. From-SVN: r131320 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c027dbae2f81..5cbb424e0c01 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2008-01-04 Richard Guenther + + PR tree-optimization/31081 + * g++.dg/torture/pr31081-1.C: New testcase. + * g++.dg/torture/pr31081-2.C: Likewise. + 2008-01-04 Richard Sandiford * 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 000000000000..cb11b2148d4e --- /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 000000000000..a14ef3798bc0 --- /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; +}