mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-25 00:33:15 +00:00
Handle ISD::DECLARE with PIC relocation model.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62516 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1999ff1d81
commit
5fc742d5b2
@ -1107,10 +1107,21 @@ SDNode *PPCDAGToDAGISel::Select(SDValue Op) {
|
|||||||
FrameIndexSDNode *FINode = dyn_cast<FrameIndexSDNode>(N1);
|
FrameIndexSDNode *FINode = dyn_cast<FrameIndexSDNode>(N1);
|
||||||
if (!FINode)
|
if (!FINode)
|
||||||
break;
|
break;
|
||||||
if (N2.getOpcode() == ISD::ADD &&
|
if (N2.getOpcode() == ISD::ADD) {
|
||||||
N2.getOperand(0).getOpcode() == PPCISD::Hi &&
|
if (N2.getOperand(0).getOpcode() == ISD::ADD &&
|
||||||
|
N2.getOperand(0).getOperand(0).getOpcode() == PPCISD::GlobalBaseReg &&
|
||||||
|
N2.getOperand(0).getOperand(1).getOpcode() == PPCISD::Hi &&
|
||||||
|
N2.getOperand(1).getOpcode() == PPCISD::Lo)
|
||||||
|
N2 = N2.getOperand(0).getOperand(1).getOperand(0);
|
||||||
|
else if (N2.getOperand(0).getOpcode() == ISD::ADD &&
|
||||||
|
N2.getOperand(0).getOperand(0).getOpcode() == PPCISD::GlobalBaseReg &&
|
||||||
|
N2.getOperand(0).getOperand(1).getOpcode() == PPCISD::Lo &&
|
||||||
|
N2.getOperand(1).getOpcode() == PPCISD::Hi)
|
||||||
|
N2 = N2.getOperand(0).getOperand(1).getOperand(0);
|
||||||
|
else if (N2.getOperand(0).getOpcode() == PPCISD::Hi &&
|
||||||
N2.getOperand(1).getOpcode() == PPCISD::Lo)
|
N2.getOperand(1).getOpcode() == PPCISD::Lo)
|
||||||
N2 = N2.getOperand(0).getOperand(0);
|
N2 = N2.getOperand(0).getOperand(0);
|
||||||
|
}
|
||||||
if (!isa<GlobalAddressSDNode>(N2))
|
if (!isa<GlobalAddressSDNode>(N2))
|
||||||
break;
|
break;
|
||||||
int FI = cast<FrameIndexSDNode>(N1)->getIndex();
|
int FI = cast<FrameIndexSDNode>(N1)->getIndex();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user