summaryrefslogtreecommitdiff
path: root/utils/TableGen/DAGISelMatcherGen.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-03-07 07:20:49 +0000
committerChris Lattner <sabre@nondot.org>2010-03-07 07:20:49 +0000
commit6fd326b7ff3f114f3b1eda05e1142e52222c6b54 (patch)
treec8a0dfe50eb1a638247dc0f6b25d68eba84c79e4 /utils/TableGen/DAGISelMatcherGen.cpp
parent8c42ca937453bd216b68baff1f32b47430d5b374 (diff)
downloadllvm-6fd326b7ff3f114f3b1eda05e1142e52222c6b54.tar.gz
llvm-6fd326b7ff3f114f3b1eda05e1142e52222c6b54.tar.bz2
llvm-6fd326b7ff3f114f3b1eda05e1142e52222c6b54.tar.xz
more factoring.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97911 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/DAGISelMatcherGen.cpp')
-rw-r--r--utils/TableGen/DAGISelMatcherGen.cpp14
1 files changed, 4 insertions, 10 deletions
diff --git a/utils/TableGen/DAGISelMatcherGen.cpp b/utils/TableGen/DAGISelMatcherGen.cpp
index 5488853e83..4951a425d9 100644
--- a/utils/TableGen/DAGISelMatcherGen.cpp
+++ b/utils/TableGen/DAGISelMatcherGen.cpp
@@ -201,10 +201,6 @@ void MatcherGen::AddMatcher(Matcher *NewNode) {
void MatcherGen::EmitLeafMatchCode(const TreePatternNode *N) {
assert(N->isLeaf() && "Not a leaf?");
- // If there are node predicates for this node, generate their checks.
- for (unsigned i = 0, e = N->getPredicateFns().size(); i != e; ++i)
- AddMatcher(new CheckPredicateMatcher(N->getPredicateFns()[i]));
-
// Direct match against an integer constant.
if (IntInit *II = dynamic_cast<IntInit*>(N->getLeafValue())) {
// If this is the root of the dag we're matching, we emit a redundant opcode
@@ -310,11 +306,6 @@ void MatcherGen::EmitOperatorMatchCode(const TreePatternNode *N,
// Check that the current opcode lines up.
AddMatcher(new CheckOpcodeMatcher(CInfo));
- // If there are node predicates for this node, generate their checks.
- for (unsigned i = 0, e = N->getPredicateFns().size(); i != e; ++i)
- AddMatcher(new CheckPredicateMatcher(N->getPredicateFns()[i]));
-
-
// If this node has memory references (i.e. is a load or store), tell the
// interpreter to capture them in the memref array.
if (N->NodeHasProperty(SDNPMemOperand, CGP))
@@ -447,9 +438,12 @@ void MatcherGen::EmitMatchCode(const TreePatternNode *N,
else
EmitOperatorMatchCode(N, NodeNoTypes);
+ // If there are node predicates for this node, generate their checks.
+ for (unsigned i = 0, e = N->getPredicateFns().size(); i != e; ++i)
+ AddMatcher(new CheckPredicateMatcher(N->getPredicateFns()[i]));
+
if (NodeType != EEVT::isUnknown)
AddMatcher(new CheckTypeMatcher((MVT::SimpleValueType)NodeType));
-
}
/// EmitMatcherCode - Generate the code that matches the predicate of this