This patch extends the partial inliner to support inlining parts of
vararg functions, if the vararg handling is done in the outlined part.
It adds a ForwardVarArgsTo argument to InlineFunction. If it is
non-null, all varargs passed to the inlined function will be added to
all calls to ForwardVarArgsTo.
The partial inliner takes care to only pass ForwardVarArgsTo if the
varargs handing is done in the outlined function. It checks that vastart
is not part of the function to be inlined.
test/Transforms/CodeExtractor/PartialInlineNoInline.ll (already part
of the repo) checks we do not do partial inlining if vastart is used in
a basic block that will be inlined.
Maybe document ForwardVarArgsTo? How is it used? What is the use case, in which context is it valid to use, and how is code normally generated to require the use of this flag (outlining with AllowVarargs)?