In the case where dfsan provides a custom wrapper for a function,
shadow parameters are added for each parameter of the function.
These parameters are i16s. For targets which do not consider this
a legal type, the lack of sign extension information would cause
LLVM to generate anyexts around their usage with phi variables
and calling convention logic.
Address this by introducing zero exts for each shadow parameter.
I'm a little uncomfortable with this because it seems like we're effectively dropping attributes from the call instruction. If we don't expect to create a function definition the attributes on the declaration shouldn't matter, so maybe we should be adding the zeroext attributes just to the call rather than to the declaration.