From: Sanjiv Gupta Date: Tue, 23 Jun 2009 07:10:19 +0000 (+0000) Subject: Fold the add (ptr, offset) into ptr[offset] only if the offset is small enough. movwi... X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=ae99227ef9c68b6cedcb2ae5971fd2072b598d49;p=oota-llvm.git Fold the add (ptr, offset) into ptr[offset] only if the offset is small enough. movwi and moviw allow value of 5-bits only (i.e. 32). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73953 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/PIC16/PIC16ISelLowering.cpp b/lib/Target/PIC16/PIC16ISelLowering.cpp index f113a483d69..122af70546d 100644 --- a/lib/Target/PIC16/PIC16ISelLowering.cpp +++ b/lib/Target/PIC16/PIC16ISelLowering.cpp @@ -702,10 +702,12 @@ void PIC16TargetLowering::LegalizeAddress(SDValue Ptr, SelectionDAG &DAG, if (Ptr.getOpcode() == ISD::ADD) { SDValue OperLeft = Ptr.getOperand(0); SDValue OperRight = Ptr.getOperand(1); - if (OperLeft.getOpcode() == ISD::Constant) { + if ((OperLeft.getOpcode() == ISD::Constant) && + (dyn_cast(OperLeft)->getZExtValue() < 32 )) { Offset = dyn_cast(OperLeft)->getZExtValue(); Ptr = OperRight; - } else if (OperRight.getOpcode() == ISD::Constant) { + } else if ((OperRight.getOpcode() == ISD::Constant) && + (dyn_cast(OperRight)->getZExtValue() < 32 )){ Offset = dyn_cast(OperRight)->getZExtValue(); Ptr = OperLeft; }