diff --git a/clang/test/CodeGenObjCXX/arc-exceptions-seh.mm b/clang/test/CodeGenObjCXX/arc-exceptions-seh.mm --- a/clang/test/CodeGenObjCXX/arc-exceptions-seh.mm +++ b/clang/test/CodeGenObjCXX/arc-exceptions-seh.mm @@ -1,4 +1,5 @@ -// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc -emit-llvm -fobjc-arc -fexceptions -fobjc-exceptions -fobjc-arc-exceptions -fobjc-runtime=gnustep-2.0 -o - %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc -emit-llvm -fobjc-arc -fexceptions -fobjc-exceptions -fobjc-arc-exceptions -fobjc-runtime=gnustep-2.0 -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-O0 +// RUN: %clang_cc1 -O2 -triple x86_64-pc-windows-msvc -emit-llvm -fobjc-arc -fexceptions -fobjc-exceptions -fobjc-arc-exceptions -fobjc-runtime=gnustep-2.0 -mllvm -enable-objc-arc-opts=false -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-O2 // WinEH requires funclet tokens on nounwind intrinsics if they can lower to // regular function calls in the course of IR transformations. @@ -40,18 +41,21 @@ // CHECK: [ "funclet"(token [[CATCHPAD]]) ] // CHECK: unwind label %[[CLEANUP2]] // CHECK: call -// CHECK: @llvm.objc.storeStrong +// CHECK-O0: @llvm.objc.storeStrong +// CHECK-O2: @llvm.objc.release // CHECK: [ "funclet"(token [[CATCHPAD]]) ] -// CHECK: catchret from [[CATCHPAD]] to label %catchret.dest +// CHECK-O0: catchret from [[CATCHPAD]] to label %catchret.dest +// CHECK-O2: catchret from [[CATCHPAD]] to label %eh.cont // -// This block exists and it's empty: -// CHECK: catchret.dest: -// CHECK-NEXT: br label %eh.cont +// In debug mode, this block exists and it's empty: +// CHECK-O0: catchret.dest: +// CHECK-O0-NEXT: br label %eh.cont // // CHECK: [[CLEANUP2]]: // CHECK-NEXT: [[CLEANUPPAD2:%[0-9]+]] = cleanuppad within [[CATCHPAD]] // CHECK: call -// CHECK: @llvm.objc.storeStrong +// CHECK-O0: @llvm.objc.storeStrong +// CHECK-O2: @llvm.objc.release // CHECK: [ "funclet"(token [[CLEANUPPAD2]]) ] // CHECK: cleanupret from [[CLEANUPPAD2]] // CHECK: unwind label %[[CLEANUP1]] @@ -59,6 +63,7 @@ // CHECK: [[CLEANUP1]]: // CHECK-NEXT: [[CLEANUPPAD1:%[0-9]+]] = cleanuppad within none // CHECK: call -// CHECK: @llvm.objc.storeStrong +// CHECK-O0: @llvm.objc.storeStrong +// CHECK-O2: @llvm.objc.release // CHECK: [ "funclet"(token [[CLEANUPPAD1]]) ] // CHECK: cleanupret from [[CLEANUPPAD1]] unwind to caller