mirror of
https://github.com/RPCS3/llvm.git
synced 2025-05-16 10:26:23 +00:00

When DataFlowSanitizer transforms a call to a custom function, the new call has extra parameters. The attributes on parameters must be updated to take the new position of each parameter into account. Patch by Sam Kerner! Differential Revision: https://reviews.llvm.org/D43132 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@325820 91177308-0d34-0410-b5e6-96231b3b80d8
28 lines
849 B
LLVM
28 lines
849 B
LLVM
; RUN: opt < %s -dfsan -dfsan-args-abi -dfsan-abilist=%S/Inputs/abilist.txt -S | FileCheck %s
|
|
; RUN: opt < %s -dfsan -dfsan-abilist=%S/Inputs/abilist.txt -S | FileCheck %s
|
|
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
; Declare a custom varargs function.
|
|
declare i16 @custom_varargs(i64, ...)
|
|
|
|
; CHECK-LABEL: @"dfs$call_custom_varargs"
|
|
define void @call_custom_varargs(i8* %buf) {
|
|
;; All arguments have an annotation. Check that the transformed function
|
|
;; preserves each annotation.
|
|
|
|
; CHECK: call zeroext i16 (i64, i16, i16*, i16*, ...)
|
|
; CHECK: @__dfsw_custom_varargs
|
|
; CHECK: i64 signext 200
|
|
; CHECK: i8* nonnull
|
|
; CHECK: i64 zeroext 20
|
|
; CHECK: i32 signext 1
|
|
%call = call zeroext i16 (i64, ...) @custom_varargs(
|
|
i64 signext 200,
|
|
i8* nonnull %buf,
|
|
i64 zeroext 20,
|
|
i32 signext 1
|
|
)
|
|
ret void
|
|
}
|