diff options
Diffstat (limited to 'test/CodeGen/exceptions-seh-finally.c')
-rw-r--r-- | test/CodeGen/exceptions-seh-finally.c | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/test/CodeGen/exceptions-seh-finally.c b/test/CodeGen/exceptions-seh-finally.c index 772e28306b58..f0ed22306401 100644 --- a/test/CodeGen/exceptions-seh-finally.c +++ b/test/CodeGen/exceptions-seh-finally.c @@ -23,11 +23,10 @@ void basic_finally(void) { // CHECK-NEXT: ret void // // CHECK: [[lpad]] -// CHECK-NEXT: landingpad -// CHECK-NEXT: cleanup +// CHECK-NEXT: %[[pad:[^ ]*]] = cleanuppad // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.localaddress() // CHECK: call void @"\01?fin$0@0@basic_finally@@"({{i8( zeroext)?}} 1, i8* %[[fp]]) -// CHECK: resume { i8*, i32 } +// CHECK-NEXT: cleanupret from %[[pad]] unwind to caller // CHECK: define internal void @"\01?fin$0@0@basic_finally@@"({{.*}}) // CHECK: call void @cleanup() @@ -90,11 +89,10 @@ void use_abnormal_termination(void) { // CHECK: ret void // // CHECK: [[lpad]] -// CHECK-NEXT: landingpad -// CHECK-NEXT: cleanup +// CHECK-NEXT: %[[pad:[^ ]*]] = cleanuppad // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.localaddress() // CHECK: call void @"\01?fin$0@0@use_abnormal_termination@@"({{i8( zeroext)?}} 1, i8* %[[fp]]) -// CHECK: resume { i8*, i32 } +// CHECK-NEXT: cleanupret from %[[pad]] unwind to caller // CHECK: define internal void @"\01?fin$0@0@use_abnormal_termination@@"({{i8( zeroext)?}} %[[abnormal:abnormal_termination]], i8* %frame_pointer) // CHECK: %[[abnormal_zext:[^ ]*]] = zext i8 %[[abnormal]] to i32 @@ -134,10 +132,9 @@ void noreturn_finally() { // CHECK: ret void // // CHECK: [[lpad]] -// CHECK: landingpad -// CHECK-NEXT: cleanup +// CHECK-NEXT: %[[pad:[^ ]*]] = cleanuppad // CHECK: call void @"\01?fin$0@0@noreturn_finally@@"({{.*}}) -// CHECK: resume { i8*, i32 } +// CHECK-NEXT: cleanupret from %[[pad]] unwind to caller // CHECK: define internal void @"\01?fin$0@0@noreturn_finally@@"({{.*}}) // CHECK: call void @abort() @@ -179,9 +176,9 @@ int nested___finally___finally() { // CHECK-NEXT: ret i32 0 // // CHECK: [[lpad]] -// CHECK-NEXT: landingpad -// CHECK-NEXT: cleanup +// CHECK-NEXT: %[[pad:[^ ]*]] = cleanuppad // CHECK: call void @"\01?fin$0@0@nested___finally___finally@@"({{.*}}) +// CHECK-NEXT: cleanupret from %[[pad]] unwind to caller // CHECK-LABEL: define internal void @"\01?fin$0@0@nested___finally___finally@@"({{.*}}) // CHECK: ret void @@ -189,6 +186,8 @@ int nested___finally___finally() { // CHECK-LABEL: define internal void @"\01?fin$1@0@nested___finally___finally@@"({{.*}}) // CHECK: unreachable +// FIXME: Our behavior seems suspiciously different. + int nested___finally___finally_with_eh_edge() { __try { __try { @@ -207,23 +206,24 @@ int nested___finally___finally_with_eh_edge() { // // [[invokecont]] // CHECK: invoke void @"\01?fin$1@0@nested___finally___finally_with_eh_edge@@"({{.*}}) -// CHECK: to label %[[outercont:[^ ]*]] unwind label %[[lpad2:[^ ]*]] +// CHECK-NEXT: to label %[[outercont:[^ ]*]] unwind label %[[lpad2:[^ ]*]] // // CHECK: [[outercont]] // CHECK: call void @"\01?fin$0@0@nested___finally___finally_with_eh_edge@@"({{.*}}) // CHECK-NEXT: ret i32 912 // // CHECK: [[lpad1]] -// CHECK-NEXT: landingpad -// CHECK-NEXT: cleanup +// CHECK-NEXT: %[[innerpad:[^ ]*]] = cleanuppad // CHECK: invoke void @"\01?fin$1@0@nested___finally___finally_with_eh_edge@@"({{.*}}) -// CHECK: to label %[[outercont:[^ ]*]] unwind label %[[lpad2]] +// CHECK-NEXT: label %[[innercleanupretbb:[^ ]*]] unwind label %[[lpad2:[^ ]*]] +// +// CHECK: [[innercleanupretbb]] +// CHECK-NEXT: cleanupret from %[[innerpad]] unwind label %[[lpad2]] // // CHECK: [[lpad2]] -// CHECK-NEXT: landingpad -// CHECK-NEXT: cleanup +// CHECK-NEXT: %[[outerpad:[^ ]*]] = cleanuppad // CHECK: call void @"\01?fin$0@0@nested___finally___finally_with_eh_edge@@"({{.*}}) -// CHECK: resume +// CHECK-NEXT: cleanupret from %[[outerpad]] unwind to caller // CHECK-LABEL: define internal void @"\01?fin$0@0@nested___finally___finally_with_eh_edge@@"({{.*}}) // CHECK: ret void |