summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2011-02-11 21:19:16 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2011-02-11 21:19:16 +0000
commit892c141ef621e0ceb249dc28205da1b959398327 (patch)
tree0be6d082a19931a25b706792a777759fc9d4fd6a
parent59b292ba5aed658380a2e63834008604a2472fc3 (diff)
downloadppe42-gcc-892c141ef621e0ceb249dc28205da1b959398327.tar.gz
ppe42-gcc-892c141ef621e0ceb249dc28205da1b959398327.zip
PR tree-optimization/47420
* ipa-split.c (visit_bb): Punt on any kind of GIMPLE_RESX. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170061 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/ipa-split.c5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/opt/inline17.C80
4 files changed, 92 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 92f3ddb9dfd..25270c9a762 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,9 @@
-2011-02-11 Pat Haugen <pthaugen@us.ibm.com>
+2011-02-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR tree-optimization/47420
+ * ipa-split.c (visit_bb): Punt on any kind of GIMPLE_RESX.
+
+2011-02-11 Pat Haugen <pthaugen@us.ibm.com>
PR rtl-optimization/47614
* rtl.h (check_for_inc_dec): Declare.
diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c
index dce57eaeb63..3b26f61b1fb 100644
--- a/gcc/ipa-split.c
+++ b/gcc/ipa-split.c
@@ -643,11 +643,10 @@ visit_bb (basic_block bb, basic_block return_bb,
into different partitions. This would require tracking of
EH regions and checking in consider_split_point if they
are not used elsewhere. */
- if (gimple_code (stmt) == GIMPLE_RESX
- && stmt_can_throw_external (stmt))
+ if (gimple_code (stmt) == GIMPLE_RESX)
{
if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "Cannot split: external resx.\n");
+ fprintf (dump_file, "Cannot split: resx.\n");
can_split = false;
}
if (gimple_code (stmt) == GIMPLE_EH_DISPATCH)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 996c2d9ded3..06a388e01d0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2011-02-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * g++.dg/opt/inline17.C: New test.
+
2011-02-11 Tobias Burnus <burnus@net-b.de>
PR fortran/47550
diff --git a/gcc/testsuite/g++.dg/opt/inline17.C b/gcc/testsuite/g++.dg/opt/inline17.C
new file mode 100644
index 00000000000..a42233d57b6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/inline17.C
@@ -0,0 +1,80 @@
+// PR tree-optimization/47420
+// Testcase by Yu Simin <silver24k@gmail.com>
+
+// { dg-do compile }
+// { dg-options "-O2" }
+
+class fooControlBase
+{
+public:
+ fooControlBase() { }
+
+ virtual ~fooControlBase();
+};
+
+class fooControl : public fooControlBase
+{
+public:
+ fooControl() { }
+};
+
+class sfTextEntryBase
+{
+public:
+ sfTextEntryBase() { }
+ virtual ~sfTextEntryBase();
+};
+
+class sfTextEntry : public sfTextEntryBase
+{
+public:
+ sfTextEntry()
+ {
+ }
+};
+
+class sfTextAreaBase
+{
+public:
+ sfTextAreaBase() { }
+ virtual ~sfTextAreaBase() { }
+
+protected:
+};
+
+
+class sfTextCtrlBase : public fooControl,
+ public sfTextAreaBase,
+ public sfTextEntry
+{
+public:
+
+
+
+ sfTextCtrlBase() { }
+ virtual ~sfTextCtrlBase() { }
+};
+
+class sfTextCtrl : public sfTextCtrlBase
+{
+public:
+ sfTextCtrl(void* parent)
+ {
+ Create(parent);
+ }
+ virtual ~sfTextCtrl();
+
+ bool Create(void *parent);
+
+
+};
+
+sfTextCtrl* CreateTextCtrl()
+{
+ return new sfTextCtrl(0);
+}
+
+void foo ()
+{
+ new sfTextCtrl(0);
+}
OpenPOWER on IntegriCloud