diff options
author | John McCall <rjmccall@apple.com> | 2010-10-05 20:48:15 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-10-05 20:48:15 +0000 |
commit | e5dd32da11e703d1ff48731b7cb49c9e473aca2b (patch) | |
tree | 06f42b8d899ddd80097097a02a763d98f962a614 /clang/test/CodeGenCXX/goto.cpp | |
parent | 44e5c1f16cec053e3bce342bfa328e51c24b0a1b (diff) | |
download | bcm5719-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.cpp | 29 |
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>(); +} +} |