mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-19 23:23:38 -04:00
AArch64: support arm64_32, an ILP32 slice for watchOS.
This is the main CodeGen patch to support the arm64_32 watchOS ABI in LLVM. FastISel is mostly disabled for now since it would generate incorrect code for ILP32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371722 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -28,7 +28,7 @@ static bool useCompactUnwind(const Triple &T) {
|
||||
return false;
|
||||
|
||||
// aarch64 always has it.
|
||||
if (T.getArch() == Triple::aarch64)
|
||||
if (T.getArch() == Triple::aarch64 || T.getArch() == Triple::aarch64_32)
|
||||
return true;
|
||||
|
||||
// armv7k always has it.
|
||||
@@ -57,7 +57,8 @@ void MCObjectFileInfo::initMachOMCObjectFileInfo(const Triple &T) {
|
||||
MachO::S_ATTR_STRIP_STATIC_SYMS | MachO::S_ATTR_LIVE_SUPPORT,
|
||||
SectionKind::getReadOnly());
|
||||
|
||||
if (T.isOSDarwin() && T.getArch() == Triple::aarch64)
|
||||
if (T.isOSDarwin() &&
|
||||
(T.getArch() == Triple::aarch64 || T.getArch() == Triple::aarch64_32))
|
||||
SupportsCompactUnwindWithoutEHFrame = true;
|
||||
|
||||
if (T.isWatchABI())
|
||||
@@ -193,7 +194,7 @@ void MCObjectFileInfo::initMachOMCObjectFileInfo(const Triple &T) {
|
||||
|
||||
if (T.getArch() == Triple::x86_64 || T.getArch() == Triple::x86)
|
||||
CompactUnwindDwarfEHFrameOnly = 0x04000000; // UNWIND_X86_64_MODE_DWARF
|
||||
else if (T.getArch() == Triple::aarch64)
|
||||
else if (T.getArch() == Triple::aarch64 || T.getArch() == Triple::aarch64_32)
|
||||
CompactUnwindDwarfEHFrameOnly = 0x03000000; // UNWIND_ARM64_MODE_DWARF
|
||||
else if (T.getArch() == Triple::arm || T.getArch() == Triple::thumb)
|
||||
CompactUnwindDwarfEHFrameOnly = 0x04000000; // UNWIND_ARM_MODE_DWARF
|
||||
|
||||
Reference in New Issue
Block a user