1; RUN: opt < %s -dfsan -dfsan-args-abi -dfsan-abilist=%S/Inputs/abilist.txt -S | FileCheck %s 2; RUN: opt < %s -dfsan -dfsan-abilist=%S/Inputs/abilist.txt -S | FileCheck %s 3target triple = "x86_64-unknown-linux-gnu" 4 5; CHECK: @__dfsan_shadow_width_bits = weak_odr constant i32 [[#SBITS:]] 6; CHECK: @__dfsan_shadow_width_bytes = weak_odr constant i32 [[#SBYTES:]] 7 8; Declare a custom varargs function. 9declare i16 @custom_varargs(i64, ...) 10 11; CHECK-LABEL: @call_custom_varargs.dfsan 12define void @call_custom_varargs(i8* %buf) { 13 ;; All arguments have an annotation. Check that the transformed function 14 ;; preserves each annotation. 15 16 ; CHECK: call zeroext i16 (i64, i[[#SBITS]], i[[#SBITS]]*, i[[#SBITS]]*, ...) 17 ; CHECK-SAME: @__dfsw_custom_varargs 18 ; CHECK-SAME: i64 signext 200 19 ; CHECK-SAME: i8* nonnull 20 ; CHECK-SAME: i64 zeroext 20 21 ; CHECK-SAME: i32 signext 1 22 %call = call zeroext i16 (i64, ...) @custom_varargs( 23 i64 signext 200, 24 i8* nonnull %buf, 25 i64 zeroext 20, 26 i32 signext 1 27 ) 28 ret void 29} 30