[SILType] SILFunctionConventions API.

Separate formal lowered types from SIL types.
The SIL type of an argument will depend on the SIL module's conventions.
The module conventions are determined by the SIL stage and LangOpts.

Almost NFC, but specialized manglings are broken incidentally as a result of
fixes to the way passes handle book-keeping of aruments. The mangler is fixed in
the subsequent commit.

Otherwise, NFC is intended, but quite possible do to rewriting the logic in many
places.
This commit is contained in:
Andrew Trick
2016-10-28 16:40:41 -07:00
parent b4f207313e
commit 1abeddcc5d
82 changed files with 1695 additions and 1158 deletions

View File

@@ -1828,7 +1828,8 @@ private:
if (FunctionArgs[ArgIdx] != Arg)
continue;
if (!Params[ArgIdx].isIndirectInOut() && Params[ArgIdx].isIndirect()) {
if (!Params[ArgIdx].isIndirectInOut()
&& Params[ArgIdx].isFormalIndirect()) {
DEBUG(llvm::dbgs()
<< " Skipping Array: Not an inout or by val argument!\n");
return false;