Handle a wider arrangement of loads.
authorEric Christopher <echristo@apple.com>
Tue, 12 Oct 2010 00:43:21 +0000 (00:43 +0000)
committerEric Christopher <echristo@apple.com>
Tue, 12 Oct 2010 00:43:21 +0000 (00:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116284 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMFastISel.cpp

index d29b075ff8f19f22cdbb91d123bc0d57719b4b78..9110e99d3bfc7262227f0c62656158f8cbd4f488 100644 (file)
@@ -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)) &&