aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/CodeGen/FastISel.h
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2008-08-28 23:21:34 +0000
committerDan Gohman <gohman@apple.com>2008-08-28 23:21:34 +0000
commit99b218218c0ca3ebfdd568ddfeafa07842e9d69d (patch)
treee4205b702341cd8904cf8e126f7027a4aef2b5c5 /include/llvm/CodeGen/FastISel.h
parent327ef031ed038c55ddccb34fb922dd9c9fd735a6 (diff)
downloadexternal_llvm-99b218218c0ca3ebfdd568ddfeafa07842e9d69d.zip
external_llvm-99b218218c0ca3ebfdd568ddfeafa07842e9d69d.tar.gz
external_llvm-99b218218c0ca3ebfdd568ddfeafa07842e9d69d.tar.bz2
Add a target callback for FastISel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55512 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/FastISel.h')
-rw-r--r--include/llvm/CodeGen/FastISel.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/include/llvm/CodeGen/FastISel.h b/include/llvm/CodeGen/FastISel.h
index 20a923b..364f82e 100644
--- a/include/llvm/CodeGen/FastISel.h
+++ b/include/llvm/CodeGen/FastISel.h
@@ -52,10 +52,21 @@ public:
/// the generated MachineInstrs.
BasicBlock::iterator
SelectInstructions(BasicBlock::iterator Begin, BasicBlock::iterator End,
- DenseMap<const Value*, unsigned> &ValueMap,
- DenseMap<const BasicBlock*, MachineBasicBlock *> &MBBMap,
+ DenseMap<const Value *, unsigned> &ValueMap,
+ DenseMap<const BasicBlock *, MachineBasicBlock *> &MBBMap,
MachineBasicBlock *MBB);
+ /// 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,
+ DenseMap<const Value *, unsigned> &ValueMap,
+ DenseMap<const BasicBlock *, MachineBasicBlock *> &MBBMap,
+ MachineBasicBlock *MBB) = 0;
+
virtual ~FastISel();
protected: