|
1 |
| -; RUN: opt -mtriple=x86_64-unknown-linux-gnu < %s -dfsan -S --dfsan-abilist=%S/Inputs/shadow-args-abilist.txt | FileCheck %s |
| 1 | +; RUN: opt -mtriple=x86_64-unknown-linux-gnu < %s -dfsan -S --dfsan-abilist=%S/Inputs/shadow-args-abilist.txt | FileCheck %s |
| 2 | +; RUN: opt -mtriple=x86_64-unknown-linux-gnu < %s -dfsan -S --dfsan-abilist=%S/Inputs/shadow-args-abilist.txt -dfsan-fast-16-labels | FileCheck %s |
2 | 3 |
|
3 | 4 | ; REQUIRES: x86-registered-target
|
4 | 5 |
|
5 | 6 | ; Test that the custom abi marks shadow parameters as zero extended.
|
6 | 7 |
|
| 8 | +; CHECK: @__dfsan_shadow_width_bits = weak_odr constant i32 [[#SBITS:]] |
| 9 | +; CHECK: @__dfsan_shadow_width_bytes = weak_odr constant i32 [[#SBYTES:]] |
| 10 | + |
7 | 11 | define i32 @m() {
|
| 12 | + ; CHECK-LABEL: @"dfs$m" |
| 13 | + ; CHECK: %{{.*}} = call zeroext i16 @__dfsw_dfsan_get_label(i64 signext 56, i[[#SBITS]] zeroext 0, i[[#SBITS]]* %{{.*}}) |
| 14 | + |
8 | 15 | entry:
|
9 | 16 | %call = call zeroext i16 @dfsan_get_label(i64 signext 56)
|
10 | 17 | %conv = zext i16 %call to i32
|
11 | 18 | ret i32 %conv
|
12 | 19 | }
|
13 | 20 |
|
14 |
| -; CHECK-LABEL: @"dfs$m" |
15 |
| -; CHECK: %{{.*}} = call zeroext i16 @__dfsw_dfsan_get_label(i64 signext 56, i16 zeroext 0, i16* %{{.*}}) |
16 |
| - |
17 | 21 | define i32 @k() {
|
| 22 | + ; CHECK-LABEL: @"dfs$k" |
| 23 | + ; CHECK: %{{.*}} = call zeroext i16 @__dfsw_k2(i64 signext 56, i64 signext 67, i[[#SBITS]] zeroext {{.*}}, i[[#SBITS]] zeroext {{.*}}, i[[#SBITS]]* %{{.*}}) |
| 24 | + |
18 | 25 | entry:
|
19 | 26 | %call = call zeroext i16 @k2(i64 signext 56, i64 signext 67)
|
20 | 27 | %conv = zext i16 %call to i32
|
21 | 28 | ret i32 %conv
|
22 | 29 | }
|
23 | 30 |
|
24 |
| -; CHECK-LABEL: @"dfs$k" |
25 |
| -; CHECK: %{{.*}} = call zeroext i16 @__dfsw_k2(i64 signext 56, i64 signext 67, i16 zeroext {{.*}}, i16 zeroext {{.*}}, i16* %{{.*}}) |
26 |
| - |
27 | 31 | define i32 @k3() {
|
| 32 | + ; CHECK-LABEL: @"dfs$k3" |
| 33 | + ; CHECK: %{{.*}} = call zeroext i16 @__dfsw_k4(i64 signext 56, i64 signext 67, i64 signext 78, i64 signext 89, i[[#SBITS]] zeroext {{.*}}, i[[#SBITS]] zeroext {{.*}}, i[[#SBITS]] zeroext {{.*}}, i[[#SBITS]] zeroext {{.*}}, i[[#SBITS]]* %{{.*}}) |
| 34 | + |
28 | 35 | entry:
|
29 | 36 | %call = call zeroext i16 @k4(i64 signext 56, i64 signext 67, i64 signext 78, i64 signext 89)
|
30 | 37 | %conv = zext i16 %call to i32
|
31 | 38 | ret i32 %conv
|
32 | 39 | }
|
33 | 40 |
|
34 |
| -; CHECK-LABEL: @"dfs$k3" |
35 |
| -; CHECK: %{{.*}} = call zeroext i16 @__dfsw_k4(i64 signext 56, i64 signext 67, i64 signext 78, i64 signext 89, i16 zeroext {{.*}}, i16 zeroext {{.*}}, i16 zeroext {{.*}}, i16 zeroext {{.*}}, i16* %{{.*}}) |
36 |
| - |
37 | 41 | declare zeroext i16 @dfsan_get_label(i64 signext)
|
38 |
| - |
39 | 42 | ; CHECK-LABEL: @"dfsw$dfsan_get_label"
|
40 |
| -; CHECK: %{{.*}} = call i16 @__dfsw_dfsan_get_label(i64 %0, i16 zeroext %1, i16* %{{.*}}) |
| 43 | +; CHECK: %{{.*}} = call i16 @__dfsw_dfsan_get_label(i64 %0, i[[#SBITS]] zeroext %1, i[[#SBITS]]* %{{.*}}) |
41 | 44 |
|
42 | 45 | declare zeroext i16 @k2(i64 signext, i64 signext)
|
43 | 46 | ; CHECK-LABEL: @"dfsw$k2"
|
44 |
| -; CHECK: %{{.*}} = call i16 @__dfsw_k2(i64 %{{.*}}, i64 %{{.*}}, i16 zeroext %{{.*}}, i16 zeroext %{{.*}}, i16* %{{.*}}) |
| 47 | +; CHECK: %{{.*}} = call i16 @__dfsw_k2(i64 %{{.*}}, i64 %{{.*}}, i[[#SBITS]] zeroext %{{.*}}, i[[#SBITS]] zeroext %{{.*}}, i[[#SBITS]]* %{{.*}}) |
45 | 48 |
|
46 | 49 | declare zeroext i16 @k4(i64 signext, i64 signext, i64 signext, i64 signext)
|
47 |
| - |
48 | 50 | ; CHECK-LABEL: @"dfsw$k4"
|
49 |
| -; CHECK: %{{.*}} = call i16 @__dfsw_k4(i64 %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i16 zeroext %{{.*}}, i16 zeroext %{{.*}}, i16 zeroext %{{.*}}, i16 zeroext %{{.*}}, i16* %{{.*}}) |
| 51 | +; CHECK: %{{.*}} = call i16 @__dfsw_k4(i64 %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i[[#SBITS]] zeroext %{{.*}}, i[[#SBITS]] zeroext %{{.*}}, i[[#SBITS]] zeroext %{{.*}}, i[[#SBITS]] zeroext %{{.*}}, i[[#SBITS]]* %{{.*}}) |
50 | 52 |
|
51 | 53 |
|
52 |
| -; CHECK: declare zeroext i16 @__dfsw_dfsan_get_label(i64 signext, i16, i16*) |
53 |
| -; CHECK: declare zeroext i16 @__dfsw_k2(i64 signext, i64 signext, i16, i16, i16*) |
54 |
| -; CHECK: declare zeroext i16 @__dfsw_k4(i64 signext, i64 signext, i64 signext, i64 signext, i16, i16, i16, i16, i16*) |
| 54 | +; CHECK: declare zeroext i16 @__dfsw_dfsan_get_label(i64 signext, i[[#SBITS]], i[[#SBITS]]*) |
| 55 | +; CHECK: declare zeroext i16 @__dfsw_k2(i64 signext, i64 signext, i[[#SBITS]], i[[#SBITS]], i[[#SBITS]]*) |
| 56 | +; CHECK: declare zeroext i16 @__dfsw_k4(i64 signext, i64 signext, i64 signext, i64 signext, i[[#SBITS]], i[[#SBITS]], i[[#SBITS]], i[[#SBITS]], i[[#SBITS]]*) |
0 commit comments