mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 23:17:16 +00:00
getRegForInlineAsmConstraint wants to use TargetRegisterInfo for
a lookup, pass that in rather than use a naked call to getSubtargetImpl. This involved passing down and around either a TargetMachine or TargetRegisterInfo. Update all callers/definitions around the targets and SelectionDAG. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230699 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -2814,14 +2814,17 @@ bool AddressingModeMatcher::MatchAddr(Value *Addr, unsigned Depth) {
|
||||
/// inline asm call are due to memory operands. If so, return true, otherwise
|
||||
/// return false.
|
||||
static bool IsOperandAMemoryOperand(CallInst *CI, InlineAsm *IA, Value *OpVal,
|
||||
const TargetLowering &TLI) {
|
||||
const TargetMachine &TM) {
|
||||
const Function *F = CI->getParent()->getParent();
|
||||
const TargetLowering *TLI = TM.getSubtargetImpl(*F)->getTargetLowering();
|
||||
const TargetRegisterInfo *TRI = TM.getSubtargetImpl(*F)->getRegisterInfo();
|
||||
TargetLowering::AsmOperandInfoVector TargetConstraints =
|
||||
TLI.ParseConstraints(ImmutableCallSite(CI));
|
||||
TLI->ParseConstraints(TRI, ImmutableCallSite(CI));
|
||||
for (unsigned i = 0, e = TargetConstraints.size(); i != e; ++i) {
|
||||
TargetLowering::AsmOperandInfo &OpInfo = TargetConstraints[i];
|
||||
|
||||
// Compute the constraint code and ConstraintType to use.
|
||||
TLI.ComputeConstraintToUse(OpInfo, SDValue());
|
||||
TLI->ComputeConstraintToUse(OpInfo, SDValue());
|
||||
|
||||
// If this asm operand is our Value*, and if it isn't an indirect memory
|
||||
// operand, we can't fold it!
|
||||
@@ -2837,10 +2840,10 @@ static bool IsOperandAMemoryOperand(CallInst *CI, InlineAsm *IA, Value *OpVal,
|
||||
/// FindAllMemoryUses - Recursively walk all the uses of I until we find a
|
||||
/// memory use. If we find an obviously non-foldable instruction, return true.
|
||||
/// Add the ultimately found memory instructions to MemoryUses.
|
||||
static bool FindAllMemoryUses(Instruction *I,
|
||||
SmallVectorImpl<std::pair<Instruction*,unsigned> > &MemoryUses,
|
||||
SmallPtrSetImpl<Instruction*> &ConsideredInsts,
|
||||
const TargetLowering &TLI) {
|
||||
static bool FindAllMemoryUses(
|
||||
Instruction *I,
|
||||
SmallVectorImpl<std::pair<Instruction *, unsigned>> &MemoryUses,
|
||||
SmallPtrSetImpl<Instruction *> &ConsideredInsts, const TargetMachine &TM) {
|
||||
// If we already considered this instruction, we're done.
|
||||
if (!ConsideredInsts.insert(I).second)
|
||||
return false;
|
||||
@@ -2870,12 +2873,12 @@ static bool FindAllMemoryUses(Instruction *I,
|
||||
if (!IA) return true;
|
||||
|
||||
// If this is a memory operand, we're cool, otherwise bail out.
|
||||
if (!IsOperandAMemoryOperand(CI, IA, I, TLI))
|
||||
if (!IsOperandAMemoryOperand(CI, IA, I, TM))
|
||||
return true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (FindAllMemoryUses(UserI, MemoryUses, ConsideredInsts, TLI))
|
||||
if (FindAllMemoryUses(UserI, MemoryUses, ConsideredInsts, TM))
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2963,7 +2966,7 @@ IsProfitableToFoldIntoAddressingMode(Instruction *I, ExtAddrMode &AMBefore,
|
||||
// uses.
|
||||
SmallVector<std::pair<Instruction*,unsigned>, 16> MemoryUses;
|
||||
SmallPtrSet<Instruction*, 16> ConsideredInsts;
|
||||
if (FindAllMemoryUses(I, MemoryUses, ConsideredInsts, TLI))
|
||||
if (FindAllMemoryUses(I, MemoryUses, ConsideredInsts, TM))
|
||||
return false; // Has a non-memory, non-foldable use!
|
||||
|
||||
// Now that we know that all uses of this instruction are part of a chain of
|
||||
@@ -3372,8 +3375,10 @@ bool CodeGenPrepare::OptimizeMemoryInst(Instruction *MemoryInst, Value *Addr,
|
||||
bool CodeGenPrepare::OptimizeInlineAsmInst(CallInst *CS) {
|
||||
bool MadeChange = false;
|
||||
|
||||
const TargetRegisterInfo *TRI =
|
||||
TM->getSubtargetImpl(*CS->getParent()->getParent())->getRegisterInfo();
|
||||
TargetLowering::AsmOperandInfoVector
|
||||
TargetConstraints = TLI->ParseConstraints(CS);
|
||||
TargetConstraints = TLI->ParseConstraints(TRI, CS);
|
||||
unsigned ArgNo = 0;
|
||||
for (unsigned i = 0, e = TargetConstraints.size(); i != e; ++i) {
|
||||
TargetLowering::AsmOperandInfo &OpInfo = TargetConstraints[i];
|
||||
|
||||
Reference in New Issue
Block a user