1; RUN: opt -mtriple=x86_64-unknown-linux-gnu < %s -passes=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() { 8 ; CHECK-LABEL: @m.dfsan 9 ; CHECK: %{{.*}} = call zeroext i16 @__dfsw_dfsan_get_label(i64 signext 56, i8 zeroext 0, ptr %{{.*}}) 10 11entry: 12 %call = call zeroext i16 @dfsan_get_label(i64 signext 56) 13 %conv = zext i16 %call to i32 14 ret i32 %conv 15} 16 17define i32 @k() { 18 ; CHECK-LABEL: @k.dfsan 19 ; CHECK: %{{.*}} = call zeroext i16 @__dfsw_k2(i64 signext 56, i64 signext 67, i8 zeroext {{.*}}, i8 zeroext {{.*}}, ptr %{{.*}}) 20 21entry: 22 %call = call zeroext i16 @k2(i64 signext 56, i64 signext 67) 23 %conv = zext i16 %call to i32 24 ret i32 %conv 25} 26 27define i32 @k3() { 28 ; CHECK-LABEL: @k3.dfsan 29 ; CHECK: %{{.*}} = call zeroext i16 @__dfsw_k4(i64 signext 56, i64 signext 67, i64 signext 78, i64 signext 89, i8 zeroext {{.*}}, i8 zeroext {{.*}}, i8 zeroext {{.*}}, i8 zeroext {{.*}}, ptr %{{.*}}) 30 31entry: 32 %call = call zeroext i16 @k4(i64 signext 56, i64 signext 67, i64 signext 78, i64 signext 89) 33 %conv = zext i16 %call to i32 34 ret i32 %conv 35} 36 37declare zeroext i16 @dfsan_get_label(i64 signext) 38; CHECK-LABEL: @"dfsw$dfsan_get_label" 39; CHECK: %{{.*}} = call i16 @__dfsw_dfsan_get_label(i64 %0, i8 zeroext %1, ptr %{{.*}}) 40 41declare zeroext i16 @k2(i64 signext, i64 signext) 42; CHECK-LABEL: @"dfsw$k2" 43; CHECK: %{{.*}} = call i16 @__dfsw_k2(i64 %{{.*}}, i64 %{{.*}}, i8 zeroext %{{.*}}, i8 zeroext %{{.*}}, ptr %{{.*}}) 44 45declare zeroext i16 @k4(i64 signext, i64 signext, i64 signext, i64 signext) 46; CHECK-LABEL: @"dfsw$k4" 47; CHECK: %{{.*}} = call i16 @__dfsw_k4(i64 %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i8 zeroext %{{.*}}, i8 zeroext %{{.*}}, i8 zeroext %{{.*}}, i8 zeroext %{{.*}}, ptr %{{.*}}) 48 49 50; CHECK: declare zeroext i16 @__dfsw_dfsan_get_label(i64 signext, i8, ptr) 51; CHECK: declare zeroext i16 @__dfsw_k2(i64 signext, i64 signext, i8, i8, ptr) 52; CHECK: declare zeroext i16 @__dfsw_k4(i64 signext, i64 signext, i64 signext, i64 signext, i8, i8, i8, i8, ptr) 53