llvm-6502/test/CodeGen/Thumb
Oliver Stannard 8f832fce3b [Thumb1] Re-write emitThumbRegPlusImmediate
This was motivated by a bug which caused code like this to be
miscompiled:
  declare void @take_ptr(i8*)
  define void @test() {
    %addr1.32 = alloca i8
    %addr2.32 = alloca i32, i32 1028
    call void @take_ptr(i8* %addr1)
    ret void
  }

This was emitting the following assembly to get the value of %addr1:
  add r0, sp, #1020
  add r0, r0, #8
However, "add r0, r0, #8" is not a valid Thumb1 instruction, and this
could not be assembled. The generated object file contained this,
resulting in r0 holding SP+8 rather tha SP+1028:
  add r0, sp, #1020
  add r0, sp, #8

This function looked like it could have caused miscompilations for
other combinations of registers and offsets (though I don't think it is
currently called with these), and the heuristic it used did not match
the emitted code in all cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222125 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-17 11:18:10 +00:00
..
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 Revert "Revert "DI: Fold constant arguments into a single MDString"" 2014-10-03 20:01:09 +00:00
2011-05-11-DAGLegalizer.ll
2011-06-16-NoGPRs.ll
2011-EpilogueBug.ll
2012-04-26-M0ISelBug.ll Improve logic that decides if its profitable to commute when some of the virtual registers involved have uses/defs chains connecting them to physical register. Fix up the tests that this change improves. 2014-11-05 06:43:02 +00:00
2014-06-10-thumb1-ldst-opt-bug.ll [Thumb] Make load/store optimizer less conservative. 2014-09-24 16:35:50 +00:00
asmprinter-bug.ll
barrier.ll
copy_thumb.ll Lower thumbv4t & thumbv5 lo->lo copies through a push-pop sequence 2014-08-20 23:38:50 +00:00
cortex-m0-unaligned-access.ll
DbgValueOtherTargets.test
dyn-stackalloc.ll [Thumb] Make load/store optimizer less conservative. 2014-09-24 16:35:50 +00:00
fastcc.ll
fpconv.ll
fpow.ll
frame_thumb.ll
iabs.ll
inlineasm-imm-thumb.ll
inlineasm-thumb.ll [ARM, inline-asm] Fix ARMTargetLowering::getRegForInlineAsmConstraint to return 2014-11-03 20:37:04 +00:00
ispositive.ll
large-stack.ll [Thumb1] Re-write emitThumbRegPlusImmediate 2014-11-17 11:18:10 +00:00
ldm-merge-call.ll ARM: Fix and re-enable load/store optimizer for Thumb1. 2014-08-15 17:00:30 +00:00
ldm-merge-struct.ll ARM: Fix and re-enable load/store optimizer for Thumb1. 2014-08-15 17:00:30 +00:00
ldm-stm-base-materialization.ll Thumb1 load/store optimizer: Improve code to materialize new base register. 2014-08-21 17:11:03 +00:00
ldr_ext.ll
ldr_frame.ll
lit.local.cfg
long_shift.ll
long-setcc.ll
long.ll
mature-mc-support.ll
mul.ll
pop.ll ARM / x86_64 varargs: Don't save regparms in prologue without va_start 2014-08-22 21:59:26 +00:00
PR17309.ll
push.ll
rev.ll
segmented-stacks-dynamic.ll
segmented-stacks.ll
select.ll
sjljehprepare-lower-vector.ll
stack_guard_remat.ll
stack-coloring-without-frame-ptr.ll
stack-frame.ll
stm-merge.ll ARM: Fix and re-enable load/store optimizer for Thumb1. 2014-08-15 17:00:30 +00:00
thumb-imm.ll
thumb-ldm.ll Thumb1 load/store optimizer: Improve code to materialize new base register. 2014-08-21 17:11:03 +00:00
thumb-memcpy-ldm-stm.ll [Thumb] Make load/store optimizer less conservative. 2014-09-24 16:35:50 +00:00
trap.ll
triple.ll
tst_teq.ll
unord.ll
vargs.ll