forked from OSchip/llvm-project
eliminate the TargetLowering::UsesGlobalOffsetTable bool, which is
subsumed by TargetLowering::getJumpTableEncoding(). Change uses of it to be more specific. llvm-svn: 94529
This commit is contained in:
parent
4db603f93b
commit
547c761dd6
|
@ -118,10 +118,6 @@ public:
|
|||
MVT getPointerTy() const { return PointerTy; }
|
||||
MVT getShiftAmountTy() const { return ShiftAmountTy; }
|
||||
|
||||
/// usesGlobalOffsetTable - Return true if this target uses a GOT for PIC
|
||||
/// codegen.
|
||||
bool usesGlobalOffsetTable() const { return UsesGlobalOffsetTable; }
|
||||
|
||||
/// isSelectExpensive - Return true if the select operation is expensive for
|
||||
/// this target.
|
||||
bool isSelectExpensive() const { return SelectIsExpensive; }
|
||||
|
@ -908,10 +904,6 @@ public:
|
|||
//
|
||||
|
||||
protected:
|
||||
/// setUsesGlobalOffsetTable - Specify that this target does or doesn't use a
|
||||
/// GOT for PC-relative code.
|
||||
void setUsesGlobalOffsetTable(bool V) { UsesGlobalOffsetTable = V; }
|
||||
|
||||
/// setShiftAmountType - Describe the type that should be used for shift
|
||||
/// amounts. This type defaults to the pointer type.
|
||||
void setShiftAmountType(MVT VT) { ShiftAmountTy = VT; }
|
||||
|
@ -1594,10 +1586,6 @@ private:
|
|||
///
|
||||
bool IsLittleEndian;
|
||||
|
||||
/// UsesGlobalOffsetTable - True if this target uses a GOT for PIC codegen.
|
||||
///
|
||||
bool UsesGlobalOffsetTable;
|
||||
|
||||
/// SelectIsExpensive - Tells the code generator not to expand operations
|
||||
/// into sequences that use the select operations if possible.
|
||||
bool SelectIsExpensive;
|
||||
|
|
|
@ -481,18 +481,19 @@ void AsmPrinter::EmitJumpTableInfo(MachineFunction &MF) {
|
|||
const std::vector<MachineJumpTableEntry> &JT = MJTI->getJumpTables();
|
||||
if (JT.empty()) return;
|
||||
|
||||
bool IsPic = TM.getRelocationModel() == Reloc::PIC_;
|
||||
|
||||
// Pick the directive to use to print the jump table entries, and switch to
|
||||
// the appropriate section.
|
||||
const Function *F = MF.getFunction();
|
||||
bool JTInDiffSection = false;
|
||||
if (F->isWeakForLinker() ||
|
||||
(IsPic && !TM.getTargetLowering()->usesGlobalOffsetTable())) {
|
||||
// In PIC mode, we need to emit the jump table to the same section as the
|
||||
// function body itself, otherwise the label differences won't make sense.
|
||||
// We should also do if the section name is NULL or function is declared in
|
||||
// discardable section.
|
||||
if (// In PIC mode, we need to emit the jump table to the same section as the
|
||||
// function body itself, otherwise the label differences won't make sense.
|
||||
// FIXME: Need a better predicate for this: what about custom entries?
|
||||
MJTI->getEntryKind() == MachineJumpTableInfo::EK_LabelDifference32 ||
|
||||
// We should also do if the section name is NULL or function is declared
|
||||
// in discardable section
|
||||
// FIXME: this isn't the right predicate, should be based on the MCSection
|
||||
// for the function.
|
||||
F->isWeakForLinker()) {
|
||||
OutStreamer.SwitchSection(getObjFileLowering().SectionForGlobal(F, Mang,
|
||||
TM));
|
||||
} else {
|
||||
|
|
|
@ -510,7 +510,6 @@ TargetLowering::TargetLowering(TargetMachine &tm,TargetLoweringObjectFile *tlof)
|
|||
setOperationAction(ISD::TRAP, MVT::Other, Expand);
|
||||
|
||||
IsLittleEndian = TD->isLittleEndian();
|
||||
UsesGlobalOffsetTable = false;
|
||||
ShiftAmountTy = PointerTy = MVT::getIntegerVT(8*TD->getPointerSize());
|
||||
memset(RegClassForVT, 0,MVT::LAST_VALUETYPE*sizeof(TargetRegisterClass*));
|
||||
memset(TargetDAGCombineArray, 0, array_lengthof(TargetDAGCombineArray));
|
||||
|
@ -814,8 +813,8 @@ unsigned TargetLowering::getJumpTableEncoding() const {
|
|||
|
||||
SDValue TargetLowering::getPICJumpTableRelocBase(SDValue Table,
|
||||
SelectionDAG &DAG) const {
|
||||
// FIXME: Eliminate usesGlobalOffsetTable() in favor of JTEntryKind.
|
||||
if (usesGlobalOffsetTable())
|
||||
// If our PIC model is GP relative, use the global offset table as the base.
|
||||
if (getJumpTableEncoding() == MachineJumpTableInfo::EK_GPRel32BlockAddress)
|
||||
return DAG.getGLOBAL_OFFSET_TABLE(getPointerTy());
|
||||
return Table;
|
||||
}
|
||||
|
|
|
@ -49,8 +49,6 @@ AlphaTargetLowering::AlphaTargetLowering(TargetMachine &TM)
|
|||
setShiftAmountType(MVT::i64);
|
||||
setBooleanContents(ZeroOrOneBooleanContent);
|
||||
|
||||
setUsesGlobalOffsetTable(true);
|
||||
|
||||
addRegisterClass(MVT::i64, Alpha::GPRCRegisterClass);
|
||||
addRegisterClass(MVT::f64, Alpha::F8RCRegisterClass);
|
||||
addRegisterClass(MVT::f32, Alpha::F4RCRegisterClass);
|
||||
|
|
|
@ -60,9 +60,6 @@ MipsTargetLowering(MipsTargetMachine &TM)
|
|||
// setcc operations results (slt, sgt, ...).
|
||||
setBooleanContents(ZeroOrOneBooleanContent);
|
||||
|
||||
// JumpTable targets must use GOT when using PIC_
|
||||
setUsesGlobalOffsetTable(true);
|
||||
|
||||
// Set up the register classes
|
||||
addRegisterClass(MVT::i32, Mips::CPURegsRegisterClass);
|
||||
addRegisterClass(MVT::f32, Mips::FGR32RegisterClass);
|
||||
|
|
Loading…
Reference in New Issue