mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-03 14:08:57 +00:00
Make TargetSelectInstruction protected and called from FastISel.cpp
instead of SelectionDAGISel.cpp. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90636 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
864e2efce2
commit
6e3ff37547
@ -98,14 +98,6 @@ public:
|
||||
///
|
||||
bool SelectOperator(User *I, unsigned Opcode);
|
||||
|
||||
/// TargetSelectInstruction - This method is called by target-independent
|
||||
/// code when the normal FastISel process fails to select an instruction.
|
||||
/// This gives targets a chance to emit code for anything that doesn't
|
||||
/// fit into FastISel's framework. It returns true if it was successful.
|
||||
///
|
||||
virtual bool
|
||||
TargetSelectInstruction(Instruction *I) = 0;
|
||||
|
||||
/// getRegForValue - Create a virtual register and arrange for it to
|
||||
/// be assigned the value for the given LLVM value.
|
||||
unsigned getRegForValue(Value *V);
|
||||
@ -134,6 +126,14 @@ protected:
|
||||
#endif
|
||||
);
|
||||
|
||||
/// TargetSelectInstruction - This method is called by target-independent
|
||||
/// code when the normal FastISel process fails to select an instruction.
|
||||
/// This gives targets a chance to emit code for anything that doesn't
|
||||
/// fit into FastISel's framework. It returns true if it was successful.
|
||||
///
|
||||
virtual bool
|
||||
TargetSelectInstruction(Instruction *I) = 0;
|
||||
|
||||
/// FastEmit_r - This method is called by target-independent code
|
||||
/// to request that an instruction with the given type and opcode
|
||||
/// be emitted.
|
||||
|
@ -532,7 +532,15 @@ bool FastISel::SelectBitCast(User *I) {
|
||||
|
||||
bool
|
||||
FastISel::SelectInstruction(Instruction *I) {
|
||||
return SelectOperator(I, I->getOpcode());
|
||||
// First, try doing target-independent selection.
|
||||
if (SelectOperator(I, I->getOpcode()))
|
||||
return true;
|
||||
|
||||
// Next, try calling the target to attempt to handle the instruction.
|
||||
if (TargetSelectInstruction(I))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// FastEmitBranch - Emit an unconditional branch to the given block,
|
||||
|
@ -792,12 +792,6 @@ void SelectionDAGISel::SelectAllBasicBlocks(Function &Fn,
|
||||
continue;
|
||||
}
|
||||
|
||||
// Next, try calling the target to attempt to handle the instruction.
|
||||
if (FastIS->TargetSelectInstruction(BI)) {
|
||||
ResetDebugLoc(SDB, FastIS);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Clear out the debug location so that it doesn't carry over to
|
||||
// unrelated instructions.
|
||||
ResetDebugLoc(SDB, FastIS);
|
||||
|
Loading…
Reference in New Issue
Block a user