From c2ae831ec79ec434f3664d705ef63bf971ec1d05 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Wed, 25 Feb 2015 17:44:04 +0000 Subject: [PATCH] Make __leave test pass in -Asserts builds. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230514 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/exceptions-seh-leave.c | 107 ++++++++++++++-------------- 1 file changed, 55 insertions(+), 52 deletions(-) diff --git a/test/CodeGen/exceptions-seh-leave.c b/test/CodeGen/exceptions-seh-leave.c index e6595c06cc..c590bd8703 100644 --- a/test/CodeGen/exceptions-seh-leave.c +++ b/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]] -- 2.40.0