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