forked from OSchip/llvm-project
505614bb4f
When an Armv6m function dynamically re-aligns the stack, access to incoming stack arguments (and to stack area, allocated for register varargs) is done via SP, which is incorrect, as the SP is offset by an unknown amount relative to the value of SP upon function entry. This patch fixes it, by making access to "fixed" frame objects be done via FP when the function needs stack re-alignment. It also changes the access to "fixed" frame objects be done via FP (instead of using R6/BP) also for the case when the stack frame contains variable sized objects. This should allow more objects to fit within the immediate offset of the load instruction. All of the above via a small refactoring to reuse the existing `ARMFrameLowering::ResolveFrameIndexReference.` Differential Revision: https://reviews.llvm.org/D43566 llvm-svn: 326584 |
||
---|---|---|
.. | ||
2007-01-31-RegInfoAssert.ll | ||
2007-02-02-JoinIntervalsCrash.ll | ||
2007-05-05-InvalidPushPop.ll | ||
2009-06-18-ThumbCommuteMul.ll | ||
2009-07-20-TwoAddrBug.ll | ||
2009-07-27-PEIAssert.ll | ||
2009-08-12-ConstIslandAssert.ll | ||
2009-08-12-RegInfoAssert.ll | ||
2009-08-20-ISelBug.ll | ||
2009-12-17-pre-regalloc-taildup.ll | ||
2010-06-18-SibCallCrash.ll | ||
2010-07-01-FuncAlign.ll | ||
2010-07-15-debugOrdering.ll | ||
2011-05-11-DAGLegalizer.ll | ||
2011-06-16-NoGPRs.ll | ||
2011-EpilogueBug.ll | ||
2012-04-26-M0ISelBug.ll | ||
2014-06-10-thumb1-ldst-opt-bug.ll | ||
DbgValueOtherTargets.test | ||
PR17309.ll | ||
PR35481.ll | ||
addr-modes.ll | ||
and_neg.ll | ||
asmprinter-bug.ll | ||
barrier.ll | ||
bic_imm.ll | ||
branchless-cmp.ll | ||
callee_save.ll | ||
cmp-add-fold.ll | ||
cmp-fold.ll | ||
constants.ll | ||
copy_thumb.ll | ||
cortex-m0-unaligned-access.ll | ||
dyn-stackalloc.ll | ||
fastcc.ll | ||
fpconv.ll | ||
fpow.ll | ||
frame-access.ll | ||
frame_thumb.ll | ||
iabs.ll | ||
inlineasm-imm-thumb.ll | ||
inlineasm-thumb.ll | ||
ispositive.ll | ||
large-stack.ll | ||
ldm-merge-call.ll | ||
ldm-merge-struct.ll | ||
ldm-stm-base-materialization-thumb2.ll | ||
ldm-stm-base-materialization.ll | ||
ldm-stm-postinc.ll | ||
ldr_ext.ll | ||
ldr_frame.ll | ||
lit.local.cfg | ||
litpoolremat.ll | ||
long-setcc.ll | ||
long.ll | ||
long_shift.ll | ||
machine-cse-physreg.mir | ||
mature-mc-support.ll | ||
mul.ll | ||
mvn.ll | ||
optionaldef-scheduling.ll | ||
pop.ll | ||
pr35836.ll | ||
pr35836_2.ll | ||
push.ll | ||
remove-unneeded-push-pop.ll | ||
rev.ll | ||
segmented-stacks-dynamic.ll | ||
segmented-stacks.ll | ||
select.ll | ||
sjljehprepare-lower-vector.ll | ||
stack-access.ll | ||
stack-coloring-without-frame-ptr.ll | ||
stack-frame.ll | ||
stack_guard_remat.ll | ||
stm-deprecated.ll | ||
stm-merge.ll | ||
stm-scavenging.ll | ||
tbb-reuse.mir | ||
thumb-imm.ll | ||
thumb-ldm.ll | ||
thumb-shrink-wrapping.ll | ||
trap.ll | ||
triple.ll | ||
tst_teq.ll | ||
unord.ll | ||
vargs.ll |