53 lines · plain
1; RUN: opt -mtriple=x86_64-unknown-linux-gnu < %s -passes=dfsan -S --dfsan-abilist=%S/Inputs/shadow-args-abilist.txt | FileCheck %s2 3; REQUIRES: x86-registered-target4 5; Test that the custom abi marks shadow parameters as zero extended.6 7define i32 @m() {8 ; CHECK-LABEL: @m.dfsan9 ; 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 i3214 ret i32 %conv15}16 17define i32 @k() {18 ; CHECK-LABEL: @k.dfsan19 ; 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 i3224 ret i32 %conv25}26 27define i32 @k3() {28 ; CHECK-LABEL: @k3.dfsan29 ; 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 i3234 ret i32 %conv35}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