[all-commits] [llvm/llvm-project] 01dc10: [ARM] unwinding .pad instructions missing in execu...
walkerkd via All-commits
all-commits at lists.llvm.org
Tue Apr 7 03:52:32 PDT 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 01dc10774eb87bc2f114a0e2d77083dbec62226b
https://github.com/llvm/llvm-project/commit/01dc10774eb87bc2f114a0e2d77083dbec62226b
Author: Keith Walker <keith.walker at arm.com>
Date: 2020-04-07 (Tue, 07 Apr 2020)
Changed paths:
M llvm/lib/Target/ARM/ARMAsmPrinter.cpp
M llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
M llvm/lib/Target/ARM/ARMMachineFunctionInfo.h
M llvm/lib/Target/ARM/Thumb1FrameLowering.cpp
M llvm/test/CodeGen/Thumb/emergency-spill-slot.ll
A llvm/test/CodeGen/Thumb2/thumb2-execute-only-prologue.ll
Log Message:
-----------
[ARM] unwinding .pad instructions missing in execute-only prologue
If the stack pointer is altered for local variables and we are generating
Thumb2 execute-only code the .pad directive is missing.
Usually the size of the adjustment is stored in a PC-relative location
and loaded into a register which is then added to the stack pointer.
However when we are generating execute-only code code the size of the
adjustment is instead generated using the MOVW/MOVT instruction pair.
As a by product of handling the execute-only case this also fixes an
existing issue that in the none execute-only case the .pad directive was
generated against the load of the constant to a register instruction,
instead of the instruction which adds the register to the stack pointer.
Differential Revision: https://reviews.llvm.org/D76849
More information about the All-commits
mailing list