Disable gp_rel relocation for constant pools access for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54142 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bruno Cardoso Lopes
2008-07-28 19:26:25 +00:00
parent 53388fcde6
commit f33bc43c9a

View File

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