Disable gp_rel relocation for constant pools access for now.
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Mon, 28 Jul 2008 19:26:25 +0000 (19:26 +0000)
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Mon, 28 Jul 2008 19:26:25 +0000 (19:26 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54142 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/MipsISelLowering.cpp

index f1e0e598faa4cf2c14b5211c69f98e684063c0ad..0a48632395d13a631b5a80cb9e6547d7ad232f85 100644 (file)
@@ -440,16 +440,20 @@ LowerConstantPool(SDValue Op, SelectionDAG &DAG)
   SDValue CP = DAG.getTargetConstantPool(C, MVT::i32, N->getAlignment());
 
   // gp_rel relocation
   SDValue CP = DAG.getTargetConstantPool(C, MVT::i32, N->getAlignment());
 
   // gp_rel relocation
-  if (!Subtarget->hasABICall() &&  
-      IsInSmallSection(getTargetData()->getABITypeSize(C->getType()))) {
-    SDValue GPRelNode = DAG.getNode(MipsISD::GPRel, MVT::i32, CP);
-    SDValue GOT = DAG.getNode(ISD::GLOBAL_OFFSET_TABLE, MVT::i32);
-    ResNode = DAG.getNode(ISD::ADD, MVT::i32, GOT, GPRelNode); 
-  } else { // %hi/%lo relocation
+  // FIXME: we should reference the constant pool using small data sections, 
+  // but the asm printer currently doens't support this feature without
+  // hacking it. This feature should come soon so we can uncomment the 
+  // stuff below.
+  //if (!Subtarget->hasABICall() &&  
+  //    IsInSmallSection(getTargetData()->getABITypeSize(C->getType()))) {
+  //  SDValue GPRelNode = DAG.getNode(MipsISD::GPRel, MVT::i32, CP);
+  //  SDValue GOT = DAG.getNode(ISD::GLOBAL_OFFSET_TABLE, MVT::i32);
+  //  ResNode = DAG.getNode(ISD::ADD, MVT::i32, GOT, GPRelNode); 
+  //} else { // %hi/%lo relocation
     SDValue HiPart = DAG.getNode(MipsISD::Hi, MVT::i32, CP);
     SDValue Lo = DAG.getNode(MipsISD::Lo, MVT::i32, CP);
     ResNode = DAG.getNode(ISD::ADD, MVT::i32, HiPart, Lo);
     SDValue HiPart = DAG.getNode(MipsISD::Hi, MVT::i32, CP);
     SDValue Lo = DAG.getNode(MipsISD::Lo, MVT::i32, CP);
     ResNode = DAG.getNode(ISD::ADD, MVT::i32, HiPart, Lo);
-  }
+  //}
 
   return ResNode;
 }
 
   return ResNode;
 }