summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/goto.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-10-05 20:48:15 +0000
committerJohn McCall <rjmccall@apple.com>2010-10-05 20:48:15 +0000
commite5dd32da11e703d1ff48731b7cb49c9e473aca2b (patch)
tree06f42b8d899ddd80097097a02a763d98f962a614 /clang/test/CodeGenCXX/goto.cpp
parent44e5c1f16cec053e3bce342bfa328e51c24b0a1b (diff)
downloadbcm5719-llvm-e5dd32da11e703d1ff48731b7cb49c9e473aca2b.tar.gz
bcm5719-llvm-e5dd32da11e703d1ff48731b7cb49c9e473aca2b.zip
Teach PopCleanupBlock to correctly handle the possibility of branching through
a EH-only cleanup as part of a fallthrough branch-through. That this happens for this test case is actually a separate bug. llvm-svn: 115668
Diffstat (limited to 'clang/test/CodeGenCXX/goto.cpp')
-rw-r--r--clang/test/CodeGenCXX/goto.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/goto.cpp b/clang/test/CodeGenCXX/goto.cpp
new file mode 100644
index 00000000000..7ebb72f54a0
--- /dev/null
+++ b/clang/test/CodeGenCXX/goto.cpp
@@ -0,0 +1,29 @@
+// RUN: %clang-cc1 %s -fexceptions
+
+// Reduced from a crash on boost::interprocess's node_allocator_test.cpp.
+namespace test0 {
+ struct A { A(); ~A(); };
+ struct V { V(const A &a = A()); ~V(); };
+
+ template<int X> int vector_test()
+ {
+ A process_name;
+ try {
+ A segment;
+
+ V *stdvector = new V();
+
+ int x = 5, y = 7;
+ if(x == y) return 1;
+ }
+ catch(int ex){
+ return 1;
+ }
+ return 0;
+}
+
+int main ()
+{
+ return vector_test<0>();
+}
+}
OpenPOWER on IntegriCloud