mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-22 10:24:26 +00:00
propagate target operand flags from dag nodes into MachineOperands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74273 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -280,13 +280,15 @@ void ScheduleDAGSDNodes::AddOperand(MachineInstr *MI, SDValue Op,
|
|||||||
} else if (RegisterSDNode *R = dyn_cast<RegisterSDNode>(Op)) {
|
} else if (RegisterSDNode *R = dyn_cast<RegisterSDNode>(Op)) {
|
||||||
MI->addOperand(MachineOperand::CreateReg(R->getReg(), false));
|
MI->addOperand(MachineOperand::CreateReg(R->getReg(), false));
|
||||||
} else if (GlobalAddressSDNode *TGA = dyn_cast<GlobalAddressSDNode>(Op)) {
|
} else if (GlobalAddressSDNode *TGA = dyn_cast<GlobalAddressSDNode>(Op)) {
|
||||||
MI->addOperand(MachineOperand::CreateGA(TGA->getGlobal(),TGA->getOffset()));
|
MI->addOperand(MachineOperand::CreateGA(TGA->getGlobal(), TGA->getOffset(),
|
||||||
|
TGA->getTargetFlags()));
|
||||||
} else if (BasicBlockSDNode *BBNode = dyn_cast<BasicBlockSDNode>(Op)) {
|
} else if (BasicBlockSDNode *BBNode = dyn_cast<BasicBlockSDNode>(Op)) {
|
||||||
MI->addOperand(MachineOperand::CreateMBB(BBNode->getBasicBlock()));
|
MI->addOperand(MachineOperand::CreateMBB(BBNode->getBasicBlock()));
|
||||||
} else if (FrameIndexSDNode *FI = dyn_cast<FrameIndexSDNode>(Op)) {
|
} else if (FrameIndexSDNode *FI = dyn_cast<FrameIndexSDNode>(Op)) {
|
||||||
MI->addOperand(MachineOperand::CreateFI(FI->getIndex()));
|
MI->addOperand(MachineOperand::CreateFI(FI->getIndex()));
|
||||||
} else if (JumpTableSDNode *JT = dyn_cast<JumpTableSDNode>(Op)) {
|
} else if (JumpTableSDNode *JT = dyn_cast<JumpTableSDNode>(Op)) {
|
||||||
MI->addOperand(MachineOperand::CreateJTI(JT->getIndex()));
|
MI->addOperand(MachineOperand::CreateJTI(JT->getIndex(),
|
||||||
|
JT->getTargetFlags()));
|
||||||
} else if (ConstantPoolSDNode *CP = dyn_cast<ConstantPoolSDNode>(Op)) {
|
} else if (ConstantPoolSDNode *CP = dyn_cast<ConstantPoolSDNode>(Op)) {
|
||||||
int Offset = CP->getOffset();
|
int Offset = CP->getOffset();
|
||||||
unsigned Align = CP->getAlignment();
|
unsigned Align = CP->getAlignment();
|
||||||
@ -305,9 +307,11 @@ void ScheduleDAGSDNodes::AddOperand(MachineInstr *MI, SDValue Op,
|
|||||||
Idx = ConstPool->getConstantPoolIndex(CP->getMachineCPVal(), Align);
|
Idx = ConstPool->getConstantPoolIndex(CP->getMachineCPVal(), Align);
|
||||||
else
|
else
|
||||||
Idx = ConstPool->getConstantPoolIndex(CP->getConstVal(), Align);
|
Idx = ConstPool->getConstantPoolIndex(CP->getConstVal(), Align);
|
||||||
MI->addOperand(MachineOperand::CreateCPI(Idx, Offset));
|
MI->addOperand(MachineOperand::CreateCPI(Idx, Offset,
|
||||||
|
CP->getTargetFlags()));
|
||||||
} else if (ExternalSymbolSDNode *ES = dyn_cast<ExternalSymbolSDNode>(Op)) {
|
} else if (ExternalSymbolSDNode *ES = dyn_cast<ExternalSymbolSDNode>(Op)) {
|
||||||
MI->addOperand(MachineOperand::CreateES(ES->getSymbol()));
|
MI->addOperand(MachineOperand::CreateES(ES->getSymbol(), 0,
|
||||||
|
ES->getTargetFlags()));
|
||||||
} else {
|
} else {
|
||||||
assert(Op.getValueType() != MVT::Other &&
|
assert(Op.getValueType() != MVT::Other &&
|
||||||
Op.getValueType() != MVT::Flag &&
|
Op.getValueType() != MVT::Flag &&
|
||||||
|
Reference in New Issue
Block a user