diff options
author | Bob Wilson <bob.wilson@apple.com> | 2009-10-13 20:50:28 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2009-10-13 20:50:28 +0000 |
commit | 3b51560ae4d08a10a9301c1a5d953a985ec3b01c (patch) | |
tree | e401d929ae322b720e2efe45caf8add0ed214d9d /llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | |
parent | fd04c74bc0f83966f26d9f62a98f3ea9eaa83fd1 (diff) | |
download | bcm5719-llvm-3b51560ae4d08a10a9301c1a5d953a985ec3b01c.tar.gz bcm5719-llvm-3b51560ae4d08a10a9301c1a5d953a985ec3b01c.zip |
Revise ARM inline assembly memory operands to require the memory address to
be in a register. The previous use of ARM address mode 2 was completely
arbitrary and inappropriate for Thumb. Radar 7137468.
llvm-svn: 84022
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp index b0b100c8efc..16518517618 100644 --- a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -2156,14 +2156,10 @@ bool ARMDAGToDAGISel:: SelectInlineAsmMemoryOperand(const SDValue &Op, char ConstraintCode, std::vector<SDValue> &OutOps) { assert(ConstraintCode == 'm' && "unexpected asm memory constraint"); - - SDValue Base, Offset, Opc; - if (!SelectAddrMode2(Op, Op, Base, Offset, Opc)) - return true; - - OutOps.push_back(Base); - OutOps.push_back(Offset); - OutOps.push_back(Opc); + // Require the address to be in a register. That is safe for all ARM + // variants and it is hard to do anything much smarter without knowing + // how the operand is used. + OutOps.push_back(Op); return false; } |