Didn't mean to check these in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43923 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng 2007-11-09 01:28:33 +00:00
parent 7da8f399bf
commit 2dfdefd282
2 changed files with 11 additions and 14 deletions

View File

@ -1599,17 +1599,21 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
case 8: LD = DAG.getLoad(MVT::i64, Chain, Addr, NULL, 0); break; case 8: LD = DAG.getLoad(MVT::i64, Chain, Addr, NULL, 0); break;
} }
Addr = LD;
if (TLI.getTargetMachine().getRelocationModel() == Reloc::PIC_) { if (TLI.getTargetMachine().getRelocationModel() == Reloc::PIC_) {
// For PIC, the sequence is: // For PIC, the sequence is:
// BRIND(load(Jumptable + index) + RelocBase) // BRIND(load(Jumptable + index) + RelocBase)
// RelocBase can be JumpTable, GOT or some sort of global base. // RelocBase is the JumpTable on PPC and X86, GOT on Alpha
if (PTy != MVT::i32) SDOperand Reloc;
Addr = DAG.getNode(ISD::SIGN_EXTEND, PTy, Addr); if (TLI.usesGlobalOffsetTable())
Addr = DAG.getNode(ISD::ADD, PTy, Addr, Reloc = DAG.getNode(ISD::GLOBAL_OFFSET_TABLE, PTy);
TLI.getPICJumpTableRelocBase(Table, DAG)); else
Reloc = Table;
Addr = (PTy != MVT::i32) ? DAG.getNode(ISD::SIGN_EXTEND, PTy, LD) : LD;
Addr = DAG.getNode(ISD::ADD, PTy, Addr, Reloc);
Result = DAG.getNode(ISD::BRIND, MVT::Other, LD.getValue(1), Addr);
} else {
Result = DAG.getNode(ISD::BRIND, MVT::Other, LD.getValue(1), LD);
} }
Result = DAG.getNode(ISD::BRIND, MVT::Other, LD.getValue(1), Addr);
} }
} }
break; break;

View File

@ -393,13 +393,6 @@ unsigned TargetLowering::getVectorTypeBreakdown(MVT::ValueType VT,
return 1; return 1;
} }
SDOperand TargetLowering::getPICJumpTableRelocBase(SDOperand Table,
SelectionDAG &DAG) const {
if (usesGlobalOffsetTable())
return DAG.getNode(ISD::GLOBAL_OFFSET_TABLE, getPointerTy());
return Table;
}
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// Optimization Methods // Optimization Methods
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//