aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Ilseman <milseman@apple.com>2013-02-26 23:15:23 +0000
committerMichael Ilseman <milseman@apple.com>2013-02-26 23:15:23 +0000
commitbdc98d3510c1b3d32679ed3188becdc6d6dfd545 (patch)
tree1d45dcad9f1ddbdf14c2bd3caa28b47cbf2cb92f
parent533048228fe7bf3bac05e7db3d2f12aaf3f47fa1 (diff)
Have a way for a target to opt-out of target-independent fast isel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176136 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/CodeGen/FastISel.h5
-rw-r--r--lib/CodeGen/SelectionDAG/FastISel.cpp2
2 files changed, 6 insertions, 1 deletions
diff --git a/include/llvm/CodeGen/FastISel.h b/include/llvm/CodeGen/FastISel.h
index 705db7e643..57273d8b81 100644
--- a/include/llvm/CodeGen/FastISel.h
+++ b/include/llvm/CodeGen/FastISel.h
@@ -372,6 +372,11 @@ protected:
return 0;
}
+ /// Whether we should skip target-independent fast-isel
+ virtual bool SkipTargetIndependentFastISel() {
+ return false;
+ }
+
private:
bool SelectBinaryOp(const User *I, unsigned ISDOpcode);
diff --git a/lib/CodeGen/SelectionDAG/FastISel.cpp b/lib/CodeGen/SelectionDAG/FastISel.cpp
index 04f5b32e04..ff9b2ba542 100644
--- a/lib/CodeGen/SelectionDAG/FastISel.cpp
+++ b/lib/CodeGen/SelectionDAG/FastISel.cpp
@@ -822,7 +822,7 @@ FastISel::SelectInstruction(const Instruction *I) {
}
// First, try doing target-independent selection.
- if (SelectOperator(I, I->getOpcode())) {
+ if (!SkipTargetIndependentFastISel() && SelectOperator(I, I->getOpcode())) {
++NumFastIselSuccessIndependent;
DL = DebugLoc();
return true;