Remove redundant match for frame index from imm8 addrmode, it is handled by the imm12...
authorDavid Goodwin <david_goodwin@apple.com>
Thu, 30 Jul 2009 22:45:52 +0000 (22:45 +0000)
committerDavid Goodwin <david_goodwin@apple.com>
Thu, 30 Jul 2009 22:45:52 +0000 (22:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77632 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMISelDAGToDAG.cpp

index cadd7c690b2d10f04cd3b92248d98b3d99046cd5..8f1be437ed9599e421a7ec41c32baebd81a690e9 100644 (file)
@@ -630,31 +630,21 @@ bool ARMDAGToDAGISel::SelectT2AddrModeImm12(SDValue Op, SDValue N,
 bool ARMDAGToDAGISel::SelectT2AddrModeImm8(SDValue Op, SDValue N,
                                            SDValue &Base, SDValue &OffImm) {
   // Match simple R - imm8 operands.
-
-  // Match frame index...
-  if ((N.getOpcode() != ISD::ADD) && (N.getOpcode() != ISD::SUB)) {
-    if (N.getOpcode() == ISD::FrameIndex) {
-      int FI = cast<FrameIndexSDNode>(N)->getIndex();
-      Base = CurDAG->getTargetFrameIndex(FI, TLI.getPointerTy());
-      OffImm  = CurDAG->getTargetConstant(0, MVT::i32);
-      return true;
-    }
-    return false;
-  }
-
-  if (ConstantSDNode *RHS = dyn_cast<ConstantSDNode>(N.getOperand(1))) {
-    int RHSC = (int)RHS->getSExtValue();
-    if (N.getOpcode() == ISD::SUB)
-      RHSC = -RHSC;
-    
-    if ((RHSC >= -255) && (RHSC <= 0)) { // 8 bits (always negative)
-      Base   = N.getOperand(0);
-      if (Base.getOpcode() == ISD::FrameIndex) {
-        int FI = cast<FrameIndexSDNode>(Base)->getIndex();
-        Base = CurDAG->getTargetFrameIndex(FI, TLI.getPointerTy());
+  if ((N.getOpcode() == ISD::ADD) || (N.getOpcode() == ISD::SUB)) {
+    if (ConstantSDNode *RHS = dyn_cast<ConstantSDNode>(N.getOperand(1))) {
+      int RHSC = (int)RHS->getSExtValue();
+      if (N.getOpcode() == ISD::SUB)
+        RHSC = -RHSC;
+      
+      if ((RHSC >= -255) && (RHSC <= 0)) { // 8 bits (always negative)
+        Base   = N.getOperand(0);
+        if (Base.getOpcode() == ISD::FrameIndex) {
+          int FI = cast<FrameIndexSDNode>(Base)->getIndex();
+          Base = CurDAG->getTargetFrameIndex(FI, TLI.getPointerTy());
+        }
+        OffImm = CurDAG->getTargetConstant(RHSC, MVT::i32);
+        return true;
       }
-      OffImm = CurDAG->getTargetConstant(RHSC, MVT::i32);
-      return true;
     }
   }