summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/exceptions-seh-leave.c
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2015-07-01 17:10:10 +0000
committerReid Kleckner <reid@kleckner.net>2015-07-01 17:10:10 +0000
commitd0d9a1f63f1770458df9efd811fa4455a6aeacae (patch)
treed936c40a36f1b8c0dea7624ef1a8a4473b0a5706 /clang/test/CodeGen/exceptions-seh-leave.c
parentf80636682ce2b1588ba3e04fa4ebfd00adac969a (diff)
downloadbcm5719-llvm-d0d9a1f63f1770458df9efd811fa4455a6aeacae.tar.gz
bcm5719-llvm-d0d9a1f63f1770458df9efd811fa4455a6aeacae.zip
[SEH] Add 32-bit lowering for SEH __try
This re-lands r236052 and adds support for __exception_code(). In 32-bit SEH, the exception code is not available in eax. It is only available in the filter function, and now we arrange to load it and store it into an escaped variable in the parent frame. As a consequence, we have to disable the "catch i8* null" optimization on 32-bit and always generate a filter function. We can re-enable the optimization if we detect an __except block that doesn't use the exception code, but this probably isn't worth optimizing. Reviewers: majnemer Differential Revision: http://reviews.llvm.org/D10852 llvm-svn: 241171
Diffstat (limited to 'clang/test/CodeGen/exceptions-seh-leave.c')
-rw-r--r--clang/test/CodeGen/exceptions-seh-leave.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/clang/test/CodeGen/exceptions-seh-leave.c b/clang/test/CodeGen/exceptions-seh-leave.c
index 36b896d0624..ca585d4b069 100644
--- a/clang/test/CodeGen/exceptions-seh-leave.c
+++ b/clang/test/CodeGen/exceptions-seh-leave.c
@@ -205,7 +205,7 @@ int nested___except___except() {
// CHECK: br label %[[except:[^ ]*]]
// CHECK: [[except]]
-// CHECK-NEXT: invoke void @g()
+// CHECK: invoke void @g()
// CHECK-NEXT: to label %[[g2_cont:.*]] unwind label %[[g2_lpad:.*]]
// CHECK: [[g2_cont]]
@@ -216,7 +216,7 @@ int nested___except___except() {
// CHECK: br label %[[outerexcept:[^ ]*]]
// CHECK: [[outerexcept]]
-// CHECK-NEXT: br label %[[trycont4:[^ ]*]]
+// CHECK: br label %[[trycont4:[^ ]*]]
// CHECK: [[trycont4]]
// CHECK-NEXT: ret i32 1
@@ -258,11 +258,11 @@ int nested___finally___except() {
// CHECK: br label %[[except:[^ ]*]]
// CHECK: [[except]]
-// CHECK-NEXT: invoke void @g()
+// CHECK: invoke void @g()
// CHECK-NEXT: to label %[[g2_cont:.*]] unwind label %[[g2_lpad:.*]]
// CHECK: [[g2_cont]]
-// CHECK-NEXT: br label %[[tryleave:[^ ]*]]
+// CHECK: br label %[[tryleave:[^ ]*]]
// CHECK-NOT: 23
// CHECK: [[g2_lpad]]
OpenPOWER on IntegriCloud