When possible (e.g. internal linkage), strip preallocated attribute off
parameters/arguments.
This requires removing the "preallocated" operand bundle from the call
site, replacing @llvm.call.preallocated.arg() with an alloca and a
bitcast to i8*, and removing the @llvm.call.preallocated.setup().
This sort of transformation may need to be moved to somewhere more
accessible to accomodate similar transformations like inlining in the
future.
Maybe assert any non-callbase use is a BlockAddress