diff options
author | Nico Weber <nicolasweber@gmx.de> | 2015-02-25 17:44:04 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2015-02-25 17:44:04 +0000 |
commit | d9b8bd6b86add43cd9dde62674e8465adc8e911a (patch) | |
tree | c4ab3e39e222bdc705320518dc4f8261f858bb31 /clang/test/CodeGen/exceptions-seh-leave.c | |
parent | d264827229407d8a4081ef67a77cb119ecbd3d03 (diff) | |
download | bcm5719-llvm-d9b8bd6b86add43cd9dde62674e8465adc8e911a.tar.gz bcm5719-llvm-d9b8bd6b86add43cd9dde62674e8465adc8e911a.zip |
Make __leave test pass in -Asserts builds.
llvm-svn: 230514
Diffstat (limited to 'clang/test/CodeGen/exceptions-seh-leave.c')
-rw-r--r-- | clang/test/CodeGen/exceptions-seh-leave.c | 107 |
1 files changed, 55 insertions, 52 deletions
diff --git a/clang/test/CodeGen/exceptions-seh-leave.c b/clang/test/CodeGen/exceptions-seh-leave.c index e6595c06ccc..c590bd87033 100644 --- a/clang/test/CodeGen/exceptions-seh-leave.c +++ b/clang/test/CodeGen/exceptions-seh-leave.c @@ -1,8 +1,5 @@ // RUN: %clang_cc1 %s -triple x86_64-pc-win32 -fms-extensions -emit-llvm -o - | FileCheck %s -// FIXME: Rewrite CHECKs for unnamed BBs and Insts. -// REQUIRES: asserts - void g(); ////////////////////////////////////////////////////////////////////////////// @@ -22,9 +19,9 @@ int __leave_with___except_simple() { } // CHECK-LABEL: define i32 @__leave_with___except_simple() // CHECK: store i32 15, i32* %myres -// CHECK-NEXT: br label %__try.__leave +// CHECK-NEXT: br label %[[tryleave:[^ ]*]] // CHECK-NOT: store i32 23 -// CHECK: __try.__leave: +// CHECK: [[tryleave]] // CHECK-NEXT: ret i32 1 @@ -48,10 +45,10 @@ int __leave_with___except() { // keeps the CodeGen code simpler, __leave is very rare, and SimplifyCFG will // simplify this anyways. // CHECK: [[cont]] -// CHECK-NEXT: br label %__try.__leave +// CHECK-NEXT: br label %[[tryleave:[^ ]*]] // CHECK-NOT: store i32 23 -// CHECK: __try.__leave: -// CHECK-NEXT: br label %__try.cont +// CHECK: [[tryleave]] +// CHECK-NEXT: br label % ////////////////////////////////////////////////////////////////////////////// @@ -74,11 +71,11 @@ int __leave_with___finally_simple() { } // CHECK-LABEL: define i32 @__leave_with___finally_simple() // CHECK: store i32 15, i32* %myres -// CHECK-NEXT: br label %__try.__leave +// CHECK-NEXT: br label %[[tryleave:[^ ]*]] // CHECK-NOT: store i32 23 -// CHECK: __try.__leave: -// CHECK-NEXT: store i8 0, i8* %abnormal.termination.slot -// CHECK-NEXT: br label %__finally +// CHECK: [[tryleave]] +// CHECK-NEXT: store i8 0, i8* % +// CHECK-NEXT: br label % // __finally block doesn't return, __finally.cont doesn't exist. int __leave_with___finally_noreturn() { @@ -94,11 +91,11 @@ int __leave_with___finally_noreturn() { } // CHECK-LABEL: define i32 @__leave_with___finally_noreturn() // CHECK: store i32 15, i32* %myres -// CHECK-NEXT: br label %__try.__leave +// CHECK-NEXT: br label %[[tryleave:[^ ]*]] // CHECK-NOT: store i32 23 -// CHECK: __try.__leave: -// CHECK-NEXT: store i8 0, i8* %abnormal.termination.slot -// CHECK-NEXT: br label %__finally +// CHECK: [[tryleave]] +// CHECK-NEXT: store i8 0, i8* % +// CHECK-NEXT: br label % // The "normal" case. int __leave_with___finally() { @@ -118,11 +115,11 @@ int __leave_with___finally() { // For __finally, there needs to be an explicit __try.__leave, because // abnormal.termination.slot needs to be set there. // CHECK: [[cont]] -// CHECK-NEXT: br label %__try.__leave +// CHECK-NEXT: br label %[[tryleave:[^ ]*]] // CHECK-NOT: store i32 23 -// CHECK: __try.__leave: -// CHECK-NEXT: store i8 0, i8* %abnormal.termination.slot -// CHECK-NEXT: br label %__finally +// CHECK: [[tryleave]] +// CHECK-NEXT: store i8 0, i8* % +// CHECK-NEXT: br label % ////////////////////////////////////////////////////////////////////////////// @@ -153,31 +150,34 @@ int nested___except___finally() { // CHECK-LABEL: invoke void bitcast (void (...)* @g to void ()*)() // CHECK-NEXT: to label %[[g1_cont:.*]] unwind label %[[g1_lpad:.*]] -// CHECK: [[g1_cont]]: -// CHECK-NEXT: store i8 0, i8* %abnormal.termination.slot -// CHECK-NEXT: br label %__finally +// CHECK: [[g1_cont]] +// CHECK-NEXT: store i8 0, i8* %[[abnormal:[^ ]*]] +// CHECK-NEXT: br label %[[finally:[^ ]*]] -// CHECK-LABEL: __finally: -// CHECK-NEXT: invoke void bitcast (void (...)* @g to void ()*)() #3 +// CHECK: [[finally]] +// CHECK-NEXT: invoke void bitcast (void (...)* @g to void ()*)() // CHECK-NEXT: to label %[[g2_cont:.*]] unwind label %[[g2_lpad:.*]] -// CHECK: [[g2_cont]]: +// CHECK: [[g2_cont]] +// CHECK-NEXT: br label %[[tryleave:[^ ]*]] // CHECK-NOT: store i32 23 -// CHECK: br label %__try.__leave -// CHECK: [[g1_lpad]]: -// CHECK: store i8 1, i8* %abnormal.termination.slot -// CHECK-NEXT: br label %__finally +// CHECK: [[g1_lpad]] +// CHECK: store i8 1, i8* % +// CHECK-NEXT: br label %[[finally]] + +// CHECK: [[g2_lpad]] +// CHECK-NOT: %[[abnormal]] +// CHECK: br label %[[except:[^ ]*]] -// CHECK: [[g2_lpad]]: -// CHECK-NOT: %abnormal.termination.slot -// CHECK: br label %__except +// CHECK: [[except]] +// CHECK-NEXT: br label %[[trycont:[^ ]*]] -// CHECK-LABEL: __except: -// CHECK-NEXT: br label %__try.cont +// CHECK: [[trycont]] +// CHECK-NEXT: ret i32 1 -// CHECK-LABEL: __try.__leave: -// CHECK-NEXT: br label %__try.cont +// CHECK: [[tryleave]] +// CHECK-NEXT: br label %[[trycont]] int nested___except___except() { int myres = 0; @@ -203,30 +203,33 @@ int nested___except___except() { // CHECK-LABEL: invoke void bitcast (void (...)* @g to void ()*)() // CHECK-NEXT: to label %[[g1_cont:.*]] unwind label %[[g1_lpad:.*]] -// CHECK: [[g1_cont]]: +// CHECK: [[g1_cont]] // CHECK: store i32 16, i32* %myres -// CHECK-NEXT: br label %__try.cont +// CHECK-NEXT: br label %[[trycont:[^ ]*]] -// CHECK: [[g1_lpad]]: -// CHECK: br label %__except +// CHECK: [[g1_lpad]] +// CHECK: br label %[[except:[^ ]*]] -// CHECK-LABEL: __except: +// CHECK: [[except]] // CHECK-NEXT: invoke void bitcast (void (...)* @g to void ()*)() #3 // CHECK-NEXT: to label %[[g2_cont:.*]] unwind label %[[g2_lpad:.*]] -// CHECK: [[g2_cont]]: +// CHECK: [[g2_cont]] +// CHECK-NEXT: br label %[[tryleave:[^ ]*]] // CHECK-NOT: store i32 23 -// CHECK: br label %__try.__leave -// CHECK: [[g2_lpad]]: -// CHECK: br label %__except3 +// CHECK: [[g2_lpad]] +// CHECK: br label %[[outerexcept:[^ ]*]] + +// CHECK: [[outerexcept]] +// CHECK-NEXT: br label %[[trycont4:[^ ]*]] -// CHECK-LABEL: __except3: -// CHECK-NEXT: br label %__try.cont4 +// CHECK: [[trycont4]] +// CHECK-NEXT: ret i32 1 -// CHECK-LABEL: __try.cont: +// CHECK: [[trycont]] // CHECK-NEXT: store i32 51, i32* %myres -// CHECK-NEXT: br label %__try.__leave +// CHECK-NEXT: br label %[[tryleave]] -// CHECK-LABEL: __try.__leave: -// CHECK-NEXT: br label %__try.cont4 +// CHECK: [[tryleave]] +// CHECK-NEXT: br label %[[trycont4]] |