[CGObjC] Add run line for release mode in test arc-exceptions-seh.mm (NFC)
authorStefan Gränitz <stefan.graenitz@gmail.com>
Mon, 7 Nov 2022 11:23:58 +0000 (12:23 +0100)
committerStefan Gränitz <stefan.graenitz@gmail.com>
Tue, 22 Nov 2022 12:43:08 +0000 (13:43 +0100)
In release mode `arc-exceptions-seh.mm` fails. It needs `-enable-objc-arc-opts=false` to skip ObjC ARC optimizations.

Reviewed By: triplef

Differential Revision: https://reviews.llvm.org/D137942

clang/test/CodeGenObjCXX/arc-exceptions-seh.mm

index b432abc..d5da111 100644 (file)
@@ -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 @@ void try_catch_with_objc_intrinsic() {
 // 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 @@ void try_catch_with_objc_intrinsic() {
 // 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