Commit the platform definition and build script work necessary to
cross-compile for arm64_32.
arm64_32 is a variant of AARCH64 that supports an ILP32 architecture.
The codegen for Android AArch64 differs in order to the expected one
(and the one that seems to happen in Linux AArch64). The SIL and IR are
the same, but the final codegen is different.
More details in https://bugs.swift.org/browse/SR-12194.
This was introduced with the master rebranch of February 10th 2020.
For the AArch64 test, the only change is making the @PAGE piece
optional. LLVM doesn't seem to generate that part when targetting
Android or Linux.
For the ARMv7 tests, it is a little bit more complicated. Android seems
to use a different structure for PIC, which involve two labels and
instructions which are not movw/movt. To keep the iOS test undisturbed,
I added an extra check for the target-sdk-name. That allows iOS to be
the same, and Android to have their own checks. For Linux (the only
other SDK I can find that targets ARMv7), I used the Android solution,
because that seems to be what LLVM generates when using
armv7-none-linux.
Update the syntax/codegen verification to account for differences with
the aarch64 target. This makes it pass on Linux-aarch64 (and should
also suffice for android-aarch64).
Un-XFAIL tests on Linux now that ObjC interop is controllable. There
are a couple of tests that remain which are dependent on Foundation.
Fix a configuration issue that resulted in a number of tests failing on
Linux.
Instead of using the target that was passed to the driver. Use the target from
the clang importer that might have been changed by clang (i.e armv7 to thumbv7
on darwin)
rdar://32599805
Interpreter support for thumb is not yet properly implemented/tested.
Disable thumb emission.
This change is necessary because LLVM now uses the features string in the
metadata. This features string contains '+thumb'.
This is a follow-up to 034241e440.
rdar://32599805
rdar://34781037 (tests that expect non-thumb instructions are failing)
* Use clang's effective llvm triple for IR generation
Instead of using the target that was passed to the driver. Use the target from
the clang importer that might have been changed by clang (i.e armv7 to thumbv7
on darwin)
rdar://32599805
* Address review comments
* Fix test case osx-targets.swift
* Fix pic.swift test case
* Fix test abi_v7k.swift
* Address review comment for test osx-targets.swift
Most tests were using %swift or similar substitutions, which did not
include the target triple and SDK. The driver was defaulting to the
host OS. Thus, we could not run the tests when the standard library was
not built for OS X.
Swift SVN r24504