IGM.Triple is irgen.getEffectiveClangTriple(), which says "thumbv7"
in place of "armv7" for 32-bit iOS ARM targets.
Instead, lets use IGM.Context.LangOpts.Target, which is what we use
to find swiftmodule files.
Use the generic type lowering algorithm described in
"docs/CallingConvention.rst#physical-lowering" to map from IRGen's explosion
type to the type expected by the ABI.
Change IRGen to use the swift calling convention (swiftcc) for native swift
functions.
Use the 'swiftself' attribute on self parameters and for closures contexts.
Use the 'swifterror' parameter for swift error parameters.
Change functions in the runtime that are called as native swift functions to use
the swift calling convention.
rdar://19978563
We have no need for the other LLVM code generators (after all the main principle
of this smoke test is to only text X86 on macOS).
To implement this I had to split a couple of IRGen tests that involved multiple
code generator into multiple tests so I could use different REQUIRES lines. This
would be a nice feature to add to lit.