[PATCH] D51678: ARM: fix Thumb2 CodeGen for ldrex with folded frame-index

Tim Northover via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 6 14:40:04 PDT 2018


t.p.northover added inline comments.


================
Comment at: llvm/lib/Target/ARM/ARMFrameLowering.cpp:1519
         case ARMII::AddrModeT2_i8s4:
+        case ARMII::AddrModeT2_ldrex:
           Limit = std::min(Limit, ((1U << 8) - 1) * 4);
----------------
efriedma wrote:
> I'm not sure I understand why AddrModeT2_i12 needs special handling, but AddrModeT2_ldrex doesn't; I think they have a similar restriction that they only support positive offsets?
The rewriteT2FrameIndex code has special cases to convert between i12 and i8 addressing-modes by switching between add/sub (see Thumb2InstrInfo.cpp:576). That means that even though the notional limit for something that's i12 is 12 bits, it may end up in an instruction with an 8-bit limit -- hence the case below.

There's no such toggle for an ldrex.


Repository:
  rL LLVM

https://reviews.llvm.org/D51678





More information about the llvm-commits mailing list