mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-08 14:46:15 +00:00
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:
parent
7da8f399bf
commit
2dfdefd282
@ -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;
|
||||||
|
@ -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
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user