diff options
author | Eric Christopher <echristo@apple.com> | 2010-10-12 00:43:21 +0000 |
---|---|---|
committer | Eric Christopher <echristo@apple.com> | 2010-10-12 00:43:21 +0000 |
commit | db3bcc99105f45d56d244ea52792e937e8493583 (patch) | |
tree | 3ebb1c319018679592a580d2007d962058388187 /llvm/lib | |
parent | f6c73c463feee08024ca4b7500fa2c0d2afe2d87 (diff) | |
download | bcm5719-llvm-db3bcc99105f45d56d244ea52792e937e8493583.tar.gz bcm5719-llvm-db3bcc99105f45d56d244ea52792e937e8493583.zip |
Handle a wider arrangement of loads.
llvm-svn: 116284
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/ARM/ARMFastISel.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMFastISel.cpp b/llvm/lib/Target/ARM/ARMFastISel.cpp index d29b075ff8f..9110e99d3bf 100644 --- a/llvm/lib/Target/ARM/ARMFastISel.cpp +++ b/llvm/lib/Target/ARM/ARMFastISel.cpp @@ -588,6 +588,22 @@ bool ARMFastISel::ARMComputeRegOffset(const Value *Obj, unsigned &Reg, switch (Opcode) { default: break; + case Instruction::BitCast: { + // Look through bitcasts. + return ARMComputeRegOffset(U->getOperand(0), Reg, Offset); + } + case Instruction::IntToPtr: { + // Look past no-op inttoptrs. + if (TLI.getValueType(U->getOperand(0)->getType()) == TLI.getPointerTy()) + return ARMComputeRegOffset(U->getOperand(0), Reg, Offset); + break; + } + case Instruction::PtrToInt: { + // Look past no-op ptrtoints. + if (TLI.getValueType(U->getType()) == TLI.getPointerTy()) + return ARMComputeRegOffset(U->getOperand(0), Reg, Offset); + break; + } case Instruction::Alloca: { // Don't handle dynamic allocas. assert(!FuncInfo.StaticAllocaMap.count(cast<AllocaInst>(Obj)) && |