summaryrefslogtreecommitdiff
path: root/test/C++Frontend
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-11-29 09:10:50 +0000
committerChris Lattner <sabre@nondot.org>2003-11-29 09:10:50 +0000
commitb895fb06ec1fdb4e5630c8461019b5f297d79388 (patch)
treeb56c87062db29bacef47c138f538d0fa17ec32b0 /test/C++Frontend
parent3607f4d21791d7b82739bb3797f52d2f199e476b (diff)
downloadllvm-b895fb06ec1fdb4e5630c8461019b5f297d79388.tar.gz
llvm-b895fb06ec1fdb4e5630c8461019b5f297d79388.tar.bz2
llvm-b895fb06ec1fdb4e5630c8461019b5f297d79388.tar.xz
Testcase for duplicated cleanup work (PR11). Note that this testcase is not actually
tested automatically, so it is practically useless. However, it seemed silly to throw away my testcase, so here it is. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10253 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/C++Frontend')
-rw-r--r--test/C++Frontend/2003-11-29-DuplicatedCleanupTest.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/C++Frontend/2003-11-29-DuplicatedCleanupTest.cpp b/test/C++Frontend/2003-11-29-DuplicatedCleanupTest.cpp
new file mode 100644
index 0000000000..2f94d99640
--- /dev/null
+++ b/test/C++Frontend/2003-11-29-DuplicatedCleanupTest.cpp
@@ -0,0 +1,39 @@
+
+void doesntThrow() throw();
+struct F {
+ ~F() { doesntThrow(); }
+};
+
+void atest() {
+ F A;
+lab:
+ F B;
+ goto lab;
+}
+
+void test(int val) {
+label: {
+ F A;
+ F B;
+ if (val == 0) goto label;
+ if (val == 1) goto label;
+}
+}
+
+void test3(int val) {
+label: {
+ F A;
+ F B;
+ if (val == 0) { doesntThrow(); goto label; }
+ if (val == 1) { doesntThrow(); goto label; }
+}
+}
+
+void test4(int val) {
+label: {
+ F A;
+ F B;
+ if (val == 0) { F C; goto label; }
+ if (val == 1) { F D; goto label; }
+}
+}