|
11 | 11 |
|
12 | 12 | // RUN: %clang_cc1 -fsanitize=cfi-icall -fno-sanitize-trap=cfi-icall -fsanitize-recover=cfi-icall -fsanitize-minimal-runtime -fsanitize-handler-preserve-all-regs -flto -fvisibility=hidden -triple x86_64-unknown-linux -fwhole-program-vtables -emit-llvm -o - %s | FileCheck --check-prefix=PRESERVE_MIN %s |
13 | 13 |
|
14 | | -// RUN: %clang_cc1 -fsanitize=cfi-icall -fno-sanitize-trap=cfi-icall -fsanitize-recover=cfi-icall -fsanitize-minimal-runtime -fsanitize-handler-preserve-all-regs -flto -fvisibility=hidden -triple riscv64-unknown-linux -fwhole-program-vtables -emit-llvm -o - %s | FileCheck --check-prefix=RECOVER_MIN_I386 %s |
15 | | - |
16 | 14 | // RUN: %clang_cc1 -fsanitize=cfi-icall -fno-sanitize-trap=cfi-icall -fsanitize-minimal-runtime -fsanitize-handler-preserve-all-regs -flto -fvisibility=hidden -triple x86_64-unknown-linux -fwhole-program-vtables -emit-llvm -o - %s | FileCheck --check-prefix=ABORT_MIN %s |
17 | 15 |
|
18 | 16 |
|
|
46 | 44 | // PRESERVE_MIN-NEXT: [[ENTRY:.*:]] |
47 | 45 | // PRESERVE_MIN-NEXT: ret void |
48 | 46 | // |
49 | | -// RECOVER_MIN_I386-LABEL: define hidden void @f( |
50 | | -// RECOVER_MIN_I386-SAME: ) #[[ATTR0:[0-9]+]] !type [[META10:![0-9]+]] !type [[META11:![0-9]+]] { |
51 | | -// RECOVER_MIN_I386-NEXT: [[ENTRY:.*:]] |
52 | | -// RECOVER_MIN_I386-NEXT: ret void |
53 | | -// |
54 | 47 | void f() { |
55 | 48 | } |
56 | 49 |
|
@@ -184,27 +177,6 @@ void xf(); |
184 | 177 | // PRESERVE_MIN-NEXT: call void (...) [[TMP2]]() |
185 | 178 | // PRESERVE_MIN-NEXT: ret void |
186 | 179 | // |
187 | | -// RECOVER_MIN_I386-LABEL: define hidden void @g( |
188 | | -// RECOVER_MIN_I386-SAME: i32 noundef signext [[B:%.*]]) #[[ATTR0]] !type [[META12:![0-9]+]] !type [[META13:![0-9]+]] { |
189 | | -// RECOVER_MIN_I386-NEXT: [[ENTRY:.*:]] |
190 | | -// RECOVER_MIN_I386-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4 |
191 | | -// RECOVER_MIN_I386-NEXT: [[FP:%.*]] = alloca ptr, align 8 |
192 | | -// RECOVER_MIN_I386-NEXT: store i32 [[B]], ptr [[B_ADDR]], align 4 |
193 | | -// RECOVER_MIN_I386-NEXT: [[TMP0:%.*]] = load i32, ptr [[B_ADDR]], align 4 |
194 | | -// RECOVER_MIN_I386-NEXT: [[TOBOOL:%.*]] = icmp ne i32 [[TMP0]], 0 |
195 | | -// RECOVER_MIN_I386-NEXT: [[TMP1:%.*]] = zext i1 [[TOBOOL]] to i64 |
196 | | -// RECOVER_MIN_I386-NEXT: [[COND:%.*]] = select i1 [[TOBOOL]], ptr @f, ptr @xf |
197 | | -// RECOVER_MIN_I386-NEXT: store ptr [[COND]], ptr [[FP]], align 8 |
198 | | -// RECOVER_MIN_I386-NEXT: [[TMP2:%.*]] = load ptr, ptr [[FP]], align 8 |
199 | | -// RECOVER_MIN_I386-NEXT: [[TMP3:%.*]] = call i1 @llvm.type.test(ptr [[TMP2]], metadata !"_ZTSFvE"), !nosanitize [[META14:![0-9]+]] |
200 | | -// RECOVER_MIN_I386-NEXT: br i1 [[TMP3]], label %[[CONT:.*]], label %[[HANDLER_CFI_CHECK_FAIL:.*]], !prof [[PROF15:![0-9]+]], !nosanitize [[META14]] |
201 | | -// RECOVER_MIN_I386: [[HANDLER_CFI_CHECK_FAIL]]: |
202 | | -// RECOVER_MIN_I386-NEXT: call void @__ubsan_handle_cfi_check_fail_minimal() #[[ATTR4:[0-9]+]], !nosanitize [[META14]] |
203 | | -// RECOVER_MIN_I386-NEXT: br label %[[CONT]], !nosanitize [[META14]] |
204 | | -// RECOVER_MIN_I386: [[CONT]]: |
205 | | -// RECOVER_MIN_I386-NEXT: call void [[TMP2]]() |
206 | | -// RECOVER_MIN_I386-NEXT: ret void |
207 | | -// |
208 | 180 | void g(int b) { |
209 | 181 | void (*fp)() = b ? f : xf; |
210 | 182 | fp(); |
@@ -252,10 +224,3 @@ void g(int b) { |
252 | 224 | // PRESERVE_MIN: [[META10]] = !{} |
253 | 225 | // PRESERVE_MIN: [[PROF11]] = !{!"branch_weights", i32 1048575, i32 1} |
254 | 226 | //. |
255 | | -// RECOVER_MIN_I386: [[META10]] = !{i64 0, !"_ZTSFvE"} |
256 | | -// RECOVER_MIN_I386: [[META11]] = !{i64 0, !"_ZTSFvE.generalized"} |
257 | | -// RECOVER_MIN_I386: [[META12]] = !{i64 0, !"_ZTSFviE"} |
258 | | -// RECOVER_MIN_I386: [[META13]] = !{i64 0, !"_ZTSFviE.generalized"} |
259 | | -// RECOVER_MIN_I386: [[META14]] = !{} |
260 | | -// RECOVER_MIN_I386: [[PROF15]] = !{!"branch_weights", i32 1048575, i32 1} |
261 | | -//. |
0 commit comments