llvm-project/llvm/lib
Tomas Matheson b9ed8ebe0e [ARM][RegisterScavenging] Don't consider LR liveout if it is not reloaded
https://bugs.llvm.org/show_bug.cgi?id=48232

When PrologEpilogInserter writes callee-saved registers to the stack, LR is not reloaded but is instead loaded directly into PC.
This was not taken into account when determining if each callee-saved register was liveout for the block.
When frame elimination inserts virtual registers, and the register scavenger tries to scavenge LR, it considers it liveout and tries to spill again.
However there is no emergency spill slot to use, and it fails with an error:

    fatal error: error in backend: Error while trying to spill LR from class GPR: Cannot scavenge register without an emergency spill slot!

This patch pervents any callee-saved registers which are not reloaded (including LR) from being marked liveout.
They are therefore available to scavenge without requiring an extra spill.
2021-01-28 09:22:55 +00:00
..
Analysis [ThinLTO] Add Visibility bits to GlobalValueSummary::GVFlags 2021-01-27 10:43:51 -08:00
AsmParser [ThinLTO] Add Visibility bits to GlobalValueSummary::GVFlags 2021-01-27 10:43:51 -08:00
BinaryFormat [Debuginfo][DW_OP_implicit_pointer] (1/7) Support for DW_OP_LLVM_implicit_pointer 2021-01-15 14:45:04 +05:30
Bitcode [ThinLTO] Add Visibility bits to GlobalValueSummary::GVFlags 2021-01-27 10:43:51 -08:00
Bitstream [llvm] Use llvm::append_range (NFC) 2021-01-06 18:27:33 -08:00
CodeGen [ARM][RegisterScavenging] Don't consider LR liveout if it is not reloaded 2021-01-28 09:22:55 +00:00
DWARFLinker [llvm] Use pop_back_val (NFC) 2021-01-24 12:18:57 -08:00
DebugInfo [llvm] Use append_range (NFC) 2021-01-27 23:25:41 -08:00
Demangle [Demangle] Support demangling Swift calling convention in MS demangler. 2021-01-27 13:24:54 -08:00
ExecutionEngine Fix an error about implicit fallthrough during self build - new tag for ittapi. 2021-01-27 08:55:52 +03:00
Extensions llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
FileCheck [llvm] Use llvm::sort (NFC) 2021-01-17 10:39:45 -08:00
Frontend [OpenMPIRBuilder] Silence compiler warning. NFC. 2021-01-23 21:00:37 -06:00
FuzzMutate [FuzzMutate] Add mutator to modify instruction flags. 2021-01-23 19:05:20 +00:00
Fuzzer
IR [NFC][IR][AsmWriter] Fix Wreturn-type gcc warning 2021-01-28 16:42:30 +08:00
IRReader static const char *const foo => const char foo[] 2020-12-01 10:33:18 -08:00
InterfaceStub [llvm-elfabi] Support ELF file that lacks .gnu.hash section 2021-01-26 12:31:52 -08:00
LTO [LTO] Prevent devirtualization for symbols dynamically exported 2021-01-27 15:54:13 -08:00
LineEditor llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
Linker [llvm-link] Fix for an assertion when linking global with appending linkage 2021-01-23 00:10:42 -08:00
MC Revert "[WebAssembly] MC layer writes table symbols to object files" 2021-01-25 22:32:36 -08:00
MCA [llvm] Use llvm::find (NFC) 2021-01-19 20:19:14 -08:00
Object [FaultsMaps][llvm-objdump] Move FaultMapParser to Object/. Remove CodeGen dependency from llvm-objdump 2021-01-27 10:39:59 -08:00
ObjectYAML [yaml2obj] - Allow empty SectionHeaderTable definitions. 2021-01-28 10:51:52 +03:00
Option [llvm] Simplify string comparisons (NFC) 2021-01-11 18:48:09 -08:00
Passes [NewPM] Add ExtraVectorizerPasses support 2021-01-26 22:59:10 +01:00
ProfileData [CSSPGO] Support of CS profiles in extended binary format. 2021-01-27 21:29:46 -08:00
Remarks [llvm] Use append_range (NFC) 2021-01-27 23:25:41 -08:00
Support [Support] Fix build for Haiku 2021-01-28 10:50:04 +07:00
TableGen [TableGen] [DetailedRecords] Print record name that is null string as "" 2021-01-27 10:41:46 -05:00
Target [X86][AMX] Prevent shape def being scheduled across ldtilecfg. 2021-01-28 16:20:16 +08:00
Testing [llvm][NFC] Remove unnecessary vector creation in Annotations 2020-11-14 15:55:09 +00:00
TextAPI [llvm] Use llvm::sort (NFC) 2021-01-17 10:39:45 -08:00
ToolDrivers llvm-lib: Pull error printing code out of two functions 2021-01-26 19:13:30 -05:00
Transforms [NFC][Transforms][Coroutines] Remove unused variable 2021-01-28 16:42:30 +08:00
WindowsManifest llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
XRay [lib/Object, tools] - Make ELFObjectFile::getELFFile return reference. 2020-12-04 16:02:29 +03:00
CMakeLists.txt llvmbuildectomy - support disabled native target 2020-11-13 15:50:13 +01:00