forked from OSchip/llvm-project
Call the InsertAtEndOfBasicBlock hook if the usesCustomDAGSchedInserter
flag is set on an instruction. llvm-svn: 23098
This commit is contained in:
parent
17c28fa36b
commit
13d7c252e5
|
@ -20,6 +20,7 @@
|
|||
#include "llvm/CodeGen/SSARegMap.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Target/TargetInstrInfo.h"
|
||||
#include "llvm/Target/TargetLowering.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
using namespace llvm;
|
||||
|
||||
|
@ -166,7 +167,13 @@ unsigned SimpleSched::Emit(SDOperand Op) {
|
|||
}
|
||||
|
||||
// Now that we have emitted all operands, emit this instruction itself.
|
||||
BB->insert(BB->end(), MI);
|
||||
if ((II.Flags & M_USES_CUSTOM_DAG_SCHED_INSERTION) == 0) {
|
||||
BB->insert(BB->end(), MI);
|
||||
} else {
|
||||
// Insert this instruction into the end of the basic block, potentially
|
||||
// taking some custom action.
|
||||
BB = DAG.getTargetLoweringInfo().InsertAtEndOfBasicBlock(MI, BB);
|
||||
}
|
||||
} else {
|
||||
switch (Op.getOpcode()) {
|
||||
default:
|
||||
|
|
|
@ -855,6 +855,20 @@ void SelectionDAGLowering::visitFree(FreeInst &I) {
|
|||
DAG.setRoot(Result.second);
|
||||
}
|
||||
|
||||
// InsertAtEndOfBasicBlock - This method should be implemented by targets that
|
||||
// mark instructions with the 'usesCustomDAGSchedInserter' flag. These
|
||||
// instructions are special in various ways, which require special support to
|
||||
// insert. The specified MachineInstr is created but not inserted into any
|
||||
// basic blocks, and the scheduler passes ownership of it to this method.
|
||||
MachineBasicBlock *TargetLowering::InsertAtEndOfBasicBlock(MachineInstr *MI,
|
||||
MachineBasicBlock *MBB) {
|
||||
std::cerr << "If a target marks an instruction with "
|
||||
"'usesCustomDAGSchedInserter', it must implement "
|
||||
"TargetLowering::InsertAtEndOfBasicBlock!\n";
|
||||
abort();
|
||||
return 0;
|
||||
}
|
||||
|
||||
SDOperand TargetLowering::LowerVAStart(SDOperand Chain,
|
||||
SDOperand VAListP, Value *VAListV,
|
||||
SelectionDAG &DAG) {
|
||||
|
|
Loading…
Reference in New Issue