mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-30 06:38:14 +00:00
[SPARC] Make functions with GLOBAL_OFFSET_TABLE access as non-leaf functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191160 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c12c8d754d
commit
ecd4965c13
@ -1651,6 +1651,10 @@ SDValue SparcTargetLowering::makeAddress(SDValue Op, SelectionDAG &DAG) const {
|
|||||||
SDValue HiLo = makeHiLoPair(Op, SPII::MO_HI, SPII::MO_LO, DAG);
|
SDValue HiLo = makeHiLoPair(Op, SPII::MO_HI, SPII::MO_LO, DAG);
|
||||||
SDValue GlobalBase = DAG.getNode(SPISD::GLOBAL_BASE_REG, DL, VT);
|
SDValue GlobalBase = DAG.getNode(SPISD::GLOBAL_BASE_REG, DL, VT);
|
||||||
SDValue AbsAddr = DAG.getNode(ISD::ADD, DL, VT, GlobalBase, HiLo);
|
SDValue AbsAddr = DAG.getNode(ISD::ADD, DL, VT, GlobalBase, HiLo);
|
||||||
|
// GLOBAL_BASE_REG codegen'ed with call. Inform MFI that this
|
||||||
|
// function has calls.
|
||||||
|
MachineFrameInfo *MFI = DAG.getMachineFunction().getFrameInfo();
|
||||||
|
MFI->setHasCalls(true);
|
||||||
return DAG.getLoad(VT, DL, DAG.getEntryNode(), AbsAddr,
|
return DAG.getLoad(VT, DL, DAG.getEntryNode(), AbsAddr,
|
||||||
MachinePointerInfo::getGOT(), false, false, false, 0);
|
MachinePointerInfo::getGOT(), false, false, false, 0);
|
||||||
}
|
}
|
||||||
|
@ -39,8 +39,10 @@ entry:
|
|||||||
; v8pic32: sethi %hi(.LCPI0_0), %[[R1:[gilo][0-7]]]
|
; v8pic32: sethi %hi(.LCPI0_0), %[[R1:[gilo][0-7]]]
|
||||||
; v8pic32: add %[[R1]], %lo(.LCPI0_0), %[[Goffs:[gilo][0-7]]]
|
; v8pic32: add %[[R1]], %lo(.LCPI0_0), %[[Goffs:[gilo][0-7]]]
|
||||||
; v8pic32: ld [%[[GOT:[gilo][0-7]]]+%[[Goffs]]], %[[Gaddr:[gilo][0-7]]]
|
; v8pic32: ld [%[[GOT:[gilo][0-7]]]+%[[Goffs]]], %[[Gaddr:[gilo][0-7]]]
|
||||||
; v8pic32: jmp %o7+8
|
|
||||||
; v8pic32: ld [%[[Gaddr]]], %f0
|
; v8pic32: ld [%[[Gaddr]]], %f0
|
||||||
|
; v8pic32: jmp %i7+8
|
||||||
|
; v8pic32: restore
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; v9pic32: floatCP
|
; v9pic32: floatCP
|
||||||
@ -48,6 +50,8 @@ entry:
|
|||||||
; v9pic32: sethi %hi(.LCPI0_0), %[[R1:[gilo][0-7]]]
|
; v9pic32: sethi %hi(.LCPI0_0), %[[R1:[gilo][0-7]]]
|
||||||
; v9pic32: add %[[R1]], %lo(.LCPI0_0), %[[Goffs:[gilo][0-7]]]
|
; v9pic32: add %[[R1]], %lo(.LCPI0_0), %[[Goffs:[gilo][0-7]]]
|
||||||
; v9pic32: ldx [%[[GOT:[gilo][0-7]]]+%[[Goffs]]], %[[Gaddr:[gilo][0-7]]]
|
; v9pic32: ldx [%[[GOT:[gilo][0-7]]]+%[[Goffs]]], %[[Gaddr:[gilo][0-7]]]
|
||||||
; v9pic32: jmp %o7+8
|
|
||||||
; v9pic32: ld [%[[Gaddr]]], %f1
|
; v9pic32: ld [%[[Gaddr]]], %f1
|
||||||
|
; v9pic32: jmp %i7+8
|
||||||
|
; v9pic32: restore
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,8 +41,9 @@ define zeroext i8 @loadG() {
|
|||||||
; v8pic32: sethi %hi(G), %[[R1:[gilo][0-7]]]
|
; v8pic32: sethi %hi(G), %[[R1:[gilo][0-7]]]
|
||||||
; v8pic32: add %[[R1]], %lo(G), %[[Goffs:[gilo][0-7]]]
|
; v8pic32: add %[[R1]], %lo(G), %[[Goffs:[gilo][0-7]]]
|
||||||
; v8pic32: ld [%[[GOT:[gilo][0-7]]]+%[[Goffs]]], %[[Gaddr:[gilo][0-7]]]
|
; v8pic32: ld [%[[GOT:[gilo][0-7]]]+%[[Goffs]]], %[[Gaddr:[gilo][0-7]]]
|
||||||
; v8pic32: jmp %o7+8
|
; v8pic32: ldub [%[[Gaddr]]], %i0
|
||||||
; v8pic32: ldub [%[[Gaddr]]], %o0
|
; v8pic32: jmp %i7+8
|
||||||
|
; v8pic32: restore
|
||||||
|
|
||||||
|
|
||||||
; v9pic32: loadG
|
; v9pic32: loadG
|
||||||
@ -50,6 +51,7 @@ define zeroext i8 @loadG() {
|
|||||||
; v9pic32: sethi %hi(G), %[[R1:[gilo][0-7]]]
|
; v9pic32: sethi %hi(G), %[[R1:[gilo][0-7]]]
|
||||||
; v9pic32: add %[[R1]], %lo(G), %[[Goffs:[gilo][0-7]]]
|
; v9pic32: add %[[R1]], %lo(G), %[[Goffs:[gilo][0-7]]]
|
||||||
; v9pic32: ldx [%[[GOT:[gilo][0-7]]]+%[[Goffs]]], %[[Gaddr:[gilo][0-7]]]
|
; v9pic32: ldx [%[[GOT:[gilo][0-7]]]+%[[Goffs]]], %[[Gaddr:[gilo][0-7]]]
|
||||||
; v9pic32: jmp %o7+8
|
; v9pic32: ldub [%[[Gaddr]]], %i0
|
||||||
; v9pic32: ldub [%[[Gaddr]]], %o0
|
; v9pic32: jmp %i7+8
|
||||||
|
; v9pic32: restore
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user