g++.dg/tree-ssa/ehcleanup-1.C: New testcase.
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Apr 2009 17:39:33 +0000 (17:39 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Apr 2009 17:39:33 +0000 (17:39 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146603 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/tree-ssa/ehcleanup-1.C [new file with mode: 0644]

index fff5725..8fd3433 100644 (file)
@@ -1,3 +1,7 @@
+2009-04-22  Jan Hubicka  <jh@suse.cz>
+
+       * g++.dg/tree-ssa/ehcleanup-1.C: New testcase.
+
 2009-04-22  Steve Ellcey  <sje@cup.hp.com>
 
        PR testsuite/39623
diff --git a/gcc/testsuite/g++.dg/tree-ssa/ehcleanup-1.C b/gcc/testsuite/g++.dg/tree-ssa/ehcleanup-1.C
new file mode 100644 (file)
index 0000000..f4c81d3
--- /dev/null
@@ -0,0 +1,24 @@
+// { dg-options "-O2 -fdump-tree-ehcleanup1" }
+extern void can_throw ();
+class a
+{
+public:
+  ~a ()
+  {
+    if (0)
+      can_throw ();
+  }
+};
+void
+t (void)
+{
+  class a a;
+  can_throw ();
+}
+// We ought to remove implicit cleanup, since destructor is empty. 
+// { dg-final { scan-tree-dump-times "Empty EH handler" 1 "ehcleanup1" } }
+//
+// And as a result also contained control flow.
+// { dg-final { scan-tree-dump-times "Removing unreachable" 1 "ehcleanup1" } }
+//
+// { dg-final { cleanup-tree-dump "ehcleanup1" } }