[llvm-commits] [llvm] r52439 - /llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp

Evan Cheng evan.cheng at apple.com
Tue Jun 17 19:48:27 PDT 2008


Author: evancheng
Date: Tue Jun 17 21:48:27 2008
New Revision: 52439

URL: http://llvm.org/viewvc/llvm-project?rev=52439&view=rev
Log:
Unbreak DECLARE isel in pic mode.

Modified:
    llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp

Modified: llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp?rev=52439&r1=52438&r2=52439&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp Tue Jun 17 21:48:27 2008
@@ -1585,10 +1585,14 @@
       SDOperand Chain = Node->getOperand(0);
       SDOperand N1 = Node->getOperand(1);
       SDOperand N2 = Node->getOperand(2);
-      if (isa<FrameIndexSDNode>(N1) &&
-          N2.getOpcode() == X86ISD::Wrapper &&
+      if (!isa<FrameIndexSDNode>(N1))
+        break;
+      int FI = cast<FrameIndexSDNode>(N1)->getIndex();
+      if (N2.getOpcode() == ISD::ADD &&
+          N2.getOperand(0).getOpcode() == X86ISD::GlobalBaseReg)
+        N2 = N2.getOperand(1);
+      if (N2.getOpcode() == X86ISD::Wrapper &&
           isa<GlobalAddressSDNode>(N2.getOperand(0))) {
-        int FI = cast<FrameIndexSDNode>(N1)->getIndex();
         GlobalValue *GV =
           cast<GlobalAddressSDNode>(N2.getOperand(0))->getGlobal();
         SDOperand Tmp1 = CurDAG->getTargetFrameIndex(FI, TLI.getPointerTy());





More information about the llvm-commits mailing list