llvm-project/llvm/test/CodeGen/Thumb
Oliver Stannard 970b0d576c [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.

llvm-svn: 222125
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 ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
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 ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
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
DbgValueOtherTargets.test ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
PR17309.ll 17309 ARM backend incorrectly lowers COPY_STRUCT_BYVAL_I32 for thumb1 targets 2013-10-17 19:52:05 +00:00
asmprinter-bug.ll
barrier.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
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 ARM: cortex-m0 doesn't support unaligned memory access. 2014-04-02 19:28:13 +00:00
dyn-stackalloc.ll [Thumb] Make load/store optimizer less conservative. 2014-09-24 16:35:50 +00:00
fastcc.ll ARM: Fix fastcc calling convention for Thumb1 2014-06-13 08:33:03 +00:00
fpconv.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
fpow.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
frame_thumb.ll
iabs.ll
inlineasm-imm-thumb.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
inlineasm-thumb.ll [ARM, inline-asm] Fix ARMTargetLowering::getRegForInlineAsmConstraint to return 2014-11-03 20:37:04 +00:00
ispositive.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
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 ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
ldr_frame.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
lit.local.cfg Reduce verbiage of lit.local.cfg files 2014-06-09 22:42:55 +00:00
long-setcc.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
long.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
long_shift.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
mature-mc-support.ll Add triples to try to fix the windows bots. 2014-02-13 16:49:47 +00:00
mul.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
pop.ll ARM / x86_64 varargs: Don't save regparms in prologue without va_start 2014-08-22 21:59:26 +00:00
push.ll
rev.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
segmented-stacks-dynamic.ll Move the segmented stack switch to a function attribute 2014-04-10 22:58:43 +00:00
segmented-stacks.ll Segmented stacks: omit __morestack call when there's no frame. 2014-05-22 13:03:43 +00:00
select.ll
sjljehprepare-lower-vector.ll CodeGen: Stop treating vectors as aggregates 2014-01-21 22:46:46 +00:00
stack-coloring-without-frame-ptr.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
stack-frame.ll Make this test not match its own filename, when being run from a path that includes the string 'add'. 2014-04-15 22:29:32 +00:00
stack_guard_remat.ll [ARM] In dynamic-no-pic mode, ARM's post-RA pseudo expansion was incorrectly 2014-08-02 05:40:40 +00:00
stm-merge.ll ARM: Fix and re-enable load/store optimizer for Thumb1. 2014-08-15 17:00:30 +00:00
thumb-imm.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
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 ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
triple.ll Correctly handle the degenerated triple "thumb". 2013-12-18 21:29:44 +00:00
tst_teq.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00
unord.ll Fix broken CHECK lines. 2014-01-11 21:06:00 +00:00
vargs.ll ARM: yet another round of ARM test clean ups 2014-04-03 23:47:24 +00:00