|
1 | 1 | // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
|
2 |
| -// RUN: %clang_cc1 -triple x86_64-unknown-linux -O0 -fsanitize-cfi-cross-dso \ |
| 2 | +// RUN: %clang_cc1 -triple x86_64-unknown-linux -O2 -fsanitize-cfi-cross-dso \ |
3 | 3 | // RUN: -fsanitize=cfi-icall,cfi-nvcall,cfi-vcall,cfi-unrelated-cast,cfi-derived-cast \
|
4 | 4 | // RUN: -fsanitize-trap=cfi-icall,cfi-nvcall -fsanitize-recover=cfi-vcall,cfi-unrelated-cast \
|
5 | 5 | // RUN: -fsanitize-annotate-debug-info=cfi-icall,cfi-nvcall,cfi-vcall,cfi-unrelated-cast,cfi-derived-cast \
|
6 | 6 | // RUN: -fdebug-prefix-map=%S/= -fno-ident -fdebug-compilation-dir=%S -debug-info-kind=limited \
|
7 | 7 | // RUN: -emit-llvm -o - %s | FileCheck %s
|
8 | 8 |
|
9 | 9 | // CHECK-LABEL: define dso_local void @caller(
|
10 |
| -// CHECK-SAME: ptr noundef [[F:%.*]]) #[[ATTR0:[0-9]+]] !dbg [[DBG6:![0-9]+]] !type [[META14:![0-9]+]] !type [[META15:![0-9]+]] !type [[META16:![0-9]+]] { |
| 10 | +// CHECK-SAME: ptr noundef [[F:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] !dbg [[DBG7:![0-9]+]] !type [[META16:![0-9]+]] !type [[META17:![0-9]+]] !type [[META18:![0-9]+]] { |
11 | 11 | // CHECK-NEXT: [[ENTRY:.*:]]
|
12 |
| -// CHECK-NEXT: [[F_ADDR:%.*]] = alloca ptr, align 8 |
13 |
| -// CHECK-NEXT: store ptr [[F]], ptr [[F_ADDR]], align 8 |
14 |
| -// CHECK-NEXT: #dbg_declare(ptr [[F_ADDR]], [[META17:![0-9]+]], !DIExpression(), [[META18:![0-9]+]]) |
15 |
| -// CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[F_ADDR]], align 8, !dbg [[DBG19:![0-9]+]] |
16 |
| -// CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.type.test(ptr [[TMP0]], metadata !"_ZTSFvvE"), !dbg [[DBG19]], !nosanitize [[META13:![0-9]+]] |
17 |
| -// CHECK-NEXT: br i1 [[TMP1]], label %[[CFI_CONT:.*]], label %[[CFI_SLOWPATH:.*]], !dbg [[DBG19]], !prof [[PROF20:![0-9]+]], !nosanitize [[META13]] |
| 12 | +// CHECK-NEXT: #dbg_value(ptr [[F]], [[META15:![0-9]+]], !DIExpression(), [[META19:![0-9]+]]) |
| 13 | +// CHECK-NEXT: [[TMP0:%.*]] = tail call i1 @llvm.type.test(ptr [[F]], metadata !"_ZTSFvvE"), !dbg [[DBG20:![0-9]+]], !nosanitize [[META21:![0-9]+]] |
| 14 | +// CHECK-NEXT: br i1 [[TMP0]], label %[[CFI_CONT:.*]], label %[[CFI_SLOWPATH:.*]], !dbg [[DBG20]], !prof [[PROF22:![0-9]+]], !nosanitize [[META21]] |
18 | 15 | // CHECK: [[CFI_SLOWPATH]]:
|
19 |
| -// CHECK-NEXT: call void @__cfi_slowpath(i64 9080559750644022485, ptr [[TMP0]]) #[[ATTR7:[0-9]+]], !dbg [[DBG19]], !nosanitize [[META13]] |
20 |
| -// CHECK-NEXT: br label %[[CFI_CONT]], !dbg [[DBG19]], !nosanitize [[META13]] |
| 16 | +// CHECK-NEXT: tail call void @__cfi_slowpath(i64 9080559750644022485, ptr [[F]]) #[[ATTR6:[0-9]+]], !dbg [[DBG20]], !nosanitize [[META21]] |
| 17 | +// CHECK-NEXT: br label %[[CFI_CONT]], !dbg [[DBG20]], !nosanitize [[META21]] |
21 | 18 | // CHECK: [[CFI_CONT]]:
|
22 |
| -// CHECK-NEXT: call void [[TMP0]](), !dbg [[DBG19]] |
23 |
| -// CHECK-NEXT: ret void, !dbg [[DBG21:![0-9]+]] |
| 19 | +// CHECK-NEXT: tail call void [[F]]() #[[ATTR6]], !dbg [[DBG20]] |
| 20 | +// CHECK-NEXT: ret void, !dbg [[DBG23:![0-9]+]] |
24 | 21 | //
|
25 | 22 | void caller(void (*f)(void)) {
|
26 | 23 | f();
|
27 | 24 | }
|
28 | 25 | //.
|
29 |
| -// CHECK: [[META0:![0-9]+]] = distinct !DICompileUnit(language: DW_LANG_C11, file: [[META1:![0-9]+]], isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) |
| 26 | +// CHECK: [[META0:![0-9]+]] = distinct !DICompileUnit(language: DW_LANG_C11, file: [[META1:![0-9]+]], isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) |
30 | 27 | // CHECK: [[META1]] = !DIFile(filename: "{{.*}}<stdin>", directory: {{.*}})
|
31 |
| -// CHECK: [[DBG6]] = distinct !DISubprogram(name: "caller", scope: [[META7:![0-9]+]], file: [[META7]], line: 8, type: [[META8:![0-9]+]], scopeLine: 8, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: [[META0]], retainedNodes: [[META13]]) |
32 |
| -// CHECK: [[META7]] = !DIFile(filename: "{{.*}}cfi-check-fail-debuginfo.c", directory: {{.*}}) |
33 |
| -// CHECK: [[META8]] = !DISubroutineType(types: [[META9:![0-9]+]]) |
34 |
| -// CHECK: [[META9]] = !{null, [[META10:![0-9]+]]} |
35 |
| -// CHECK: [[META10]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: [[META11:![0-9]+]], size: 64) |
36 |
| -// CHECK: [[META11]] = !DISubroutineType(types: [[META12:![0-9]+]]) |
37 |
| -// CHECK: [[META12]] = !{null} |
38 |
| -// CHECK: [[META13]] = !{} |
39 |
| -// CHECK: [[META14]] = !{i64 0, !"_ZTSFvPFvvEE"} |
40 |
| -// CHECK: [[META15]] = !{i64 0, !"_ZTSFvPvE.generalized"} |
41 |
| -// CHECK: [[META16]] = !{i64 0, i64 2451761621477796417} |
42 |
| -// CHECK: [[META17]] = !DILocalVariable(name: "f", arg: 1, scope: [[DBG6]], file: [[META7]], line: 8, type: [[META10]]) |
43 |
| -// CHECK: [[META18]] = !DILocation(line: 8, column: 20, scope: [[DBG6]]) |
44 |
| -// CHECK: [[DBG19]] = !DILocation(line: 9, column: 3, scope: [[DBG6]]) |
45 |
| -// CHECK: [[PROF20]] = !{!"branch_weights", i32 1048575, i32 1} |
46 |
| -// CHECK: [[DBG21]] = !DILocation(line: 10, column: 1, scope: [[DBG6]]) |
| 28 | +// CHECK: [[DBG7]] = distinct !DISubprogram(name: "caller", scope: [[META8:![0-9]+]], file: [[META8]], line: 25, type: [[META9:![0-9]+]], scopeLine: 25, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: [[META0]], retainedNodes: [[META14:![0-9]+]]) |
| 29 | +// CHECK: [[META8]] = !DIFile(filename: "{{.*}}cfi-check-fail-debuginfo.c", directory: {{.*}}) |
| 30 | +// CHECK: [[META9]] = !DISubroutineType(types: [[META10:![0-9]+]]) |
| 31 | +// CHECK: [[META10]] = !{null, [[META11:![0-9]+]]} |
| 32 | +// CHECK: [[META11]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: [[META12:![0-9]+]], size: 64) |
| 33 | +// CHECK: [[META12]] = !DISubroutineType(types: [[META13:![0-9]+]]) |
| 34 | +// CHECK: [[META13]] = !{null} |
| 35 | +// CHECK: [[META14]] = !{[[META15]]} |
| 36 | +// CHECK: [[META15]] = !DILocalVariable(name: "f", arg: 1, scope: [[DBG7]], file: [[META8]], line: 25, type: [[META11]]) |
| 37 | +// CHECK: [[META16]] = !{i64 0, !"_ZTSFvPFvvEE"} |
| 38 | +// CHECK: [[META17]] = !{i64 0, !"_ZTSFvPvE.generalized"} |
| 39 | +// CHECK: [[META18]] = !{i64 0, i64 2451761621477796417} |
| 40 | +// CHECK: [[META19]] = !DILocation(line: 0, scope: [[DBG7]]) |
| 41 | +// CHECK: [[DBG20]] = !DILocation(line: 26, column: 3, scope: [[DBG7]]) |
| 42 | +// CHECK: [[META21]] = !{} |
| 43 | +// CHECK: [[PROF22]] = !{!"branch_weights", i32 1048575, i32 1} |
| 44 | +// CHECK: [[DBG23]] = !DILocation(line: 27, column: 1, scope: [[DBG7]]) |
47 | 45 | //.
|
0 commit comments