When DataFlowSanitizer converts call to a function which has its custom wrapper,
new call instruction directly inherits the attributes from the original call
instruction. However, this attribute copy is incorrect in case of variadic
function because shadow arguments are inserted in the middle of original
arguments.
This wrong copy behavior causes subtle compiler crashes when certain kinds of
attributes (e.g. nonnull) are attached to original varargs and the attributes are
not compatible with shadow arguments.
This bug has been mentioned in following references:
https://bugs.llvm.org/show_bug.cgi?id=28907
http://lists.llvm.org/pipermail/llvm-dev/2017-September/117324.html