1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/test/CodeGen
Matthias Braun e45ebab2b3 AArch64: Fix emergency spillslot being out of reach for large callframes
Re-commit of r322200: The testcase shouldn't hit machineverifiers
anymore with r322917 in place.

Large callframes (calls with several hundreds or thousands or
parameters) could lead to situations in which the emergency spillslot is
out of range to be addressed relative to the stack pointer.
This commit forces the use of a frame pointer in the presence of large
callframes.

This commit does several things:
- Compute max callframe size at the end of instruction selection.
- Add mirFileLoaded target callback. Use it to compute the max callframe size
  after loading a .mir file when the size wasn't specified in the file.
- Let TargetFrameLowering::hasFP() return true if there exists a
  callframe > 255 bytes.
- Always place the emergency spillslot close to FP if we have a frame
  pointer.
- Note that `useFPForScavengingIndex()` would previously return false
  when a base pointer was available leading to the emergency spillslot
  getting allocated late (that's the whole effect of this callback).
  Which made no sense to me so I took this case out: Even though the
  emergency spillslot is technically not referenced by FP in this case
  we still want it allocated early.

Differential Revision: https://reviews.llvm.org/D40876

llvm-svn: 322919
2018-01-19 03:16:36 +00:00
..
AArch64 AArch64: Fix emergency spillslot being out of reach for large callframes 2018-01-19 03:16:36 +00:00
AMDGPU AMDGPU/SI: Add d16 support for image intrinsics. 2018-01-18 22:08:53 +00:00
ARC
ARM [test] Actually check the common parts in CodeGen/ARM/global-merge-external.ll. NFC. 2018-01-18 21:21:48 +00:00
AVR
BPF [BPF] Teach DAG2DAG AND elimination about load intrinsics 2018-01-16 07:27:19 +00:00
Generic
Hexagon
Inputs
Lanai
Mips
MIR
MSP430
Nios2
NVPTX
PowerPC [LegalizeDAG] Fix ATOMIC_CMP_SWAP_WITH_SUCCESS legalization. 2018-01-17 22:04:36 +00:00
RISCV [RISCV] Codegen support for the standard RV32M instruction set extension 2018-01-18 12:36:38 +00:00
SPARC
SystemZ [SystemZ] Handle BRCTH branches correctly in SystemZLongBranch.cpp. 2018-01-17 17:16:07 +00:00
Thumb
Thumb2
WebAssembly
WinCFGuard
WinEH
X86 [X86] Add intrinsic support for the RDPID instruction 2018-01-18 23:52:31 +00:00
XCore