aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-03-04 00:28:05 +0000
committerChris Lattner <sabre@nondot.org>2010-03-04 00:28:05 +0000
commitd1aca7c8b4ea45fbee18fc18a21ed963175dd7bc (patch)
tree56cdeda7005a3d74e3f85c7d9bfa66bb9dbcfe13
parent6900a39d28132d86529724ba4dc8302edf1a9b53 (diff)
downloadexternal_llvm-d1aca7c8b4ea45fbee18fc18a21ed963175dd7bc.zip
external_llvm-d1aca7c8b4ea45fbee18fc18a21ed963175dd7bc.tar.gz
external_llvm-d1aca7c8b4ea45fbee18fc18a21ed963175dd7bc.tar.bz2
enhance comment output to specify what recorded slot
numbers a ComplexPat will match into. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97696 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--utils/TableGen/DAGISelMatcher.h8
-rw-r--r--utils/TableGen/DAGISelMatcherEmitter.cpp7
-rw-r--r--utils/TableGen/DAGISelMatcherGen.cpp2
3 files changed, 12 insertions, 5 deletions
diff --git a/utils/TableGen/DAGISelMatcher.h b/utils/TableGen/DAGISelMatcher.h
index c2e8171..8498d60 100644
--- a/utils/TableGen/DAGISelMatcher.h
+++ b/utils/TableGen/DAGISelMatcher.h
@@ -609,11 +609,15 @@ private:
/// the current node.
class CheckComplexPatMatcher : public Matcher {
const ComplexPattern &Pattern;
+ /// FirstResult - This is the first slot in the RecordedNodes list that the
+ /// result of the match populates.
+ unsigned FirstResult;
public:
- CheckComplexPatMatcher(const ComplexPattern &pattern)
- : Matcher(CheckComplexPat), Pattern(pattern) {}
+ CheckComplexPatMatcher(const ComplexPattern &pattern, unsigned firstresult)
+ : Matcher(CheckComplexPat), Pattern(pattern), FirstResult(firstresult) {}
const ComplexPattern &getPattern() const { return Pattern; }
+ unsigned getFirstResult() const { return FirstResult; }
static inline bool classof(const Matcher *N) {
return N->getKind() == CheckComplexPat;
diff --git a/utils/TableGen/DAGISelMatcherEmitter.cpp b/utils/TableGen/DAGISelMatcherEmitter.cpp
index 1f04050..1f9e093 100644
--- a/utils/TableGen/DAGISelMatcherEmitter.cpp
+++ b/utils/TableGen/DAGISelMatcherEmitter.cpp
@@ -375,9 +375,12 @@ EmitMatcher(const Matcher *N, unsigned Indent, unsigned CurrentIdx,
OS << "OPC_CheckComplexPat, " << getComplexPat(Pattern) << ',';
if (!OmitComments) {
OS.PadToColumn(CommentIndent) << "// " << Pattern.getSelectFunc();
- OS << ": " << Pattern.getNumOperands() << " operands";
+ OS << ':';
+ for (unsigned i = 0, e = Pattern.getNumOperands(); i != e; ++i)
+ OS << " #" << cast<CheckComplexPatMatcher>(N)->getFirstResult()+i;
+
if (Pattern.hasProperty(SDNPHasChain))
- OS << " + chain result and input";
+ OS << " + chain result";
}
OS << '\n';
return 2;
diff --git a/utils/TableGen/DAGISelMatcherGen.cpp b/utils/TableGen/DAGISelMatcherGen.cpp
index 4482803..f4e2b8d 100644
--- a/utils/TableGen/DAGISelMatcherGen.cpp
+++ b/utils/TableGen/DAGISelMatcherGen.cpp
@@ -252,7 +252,7 @@ void MatcherGen::EmitLeafMatchCode(const TreePatternNode *N) {
// Emit a CheckComplexPat operation, which does the match (aborting if it
// fails) and pushes the matched operands onto the recorded nodes list.
- AddMatcher(new CheckComplexPatMatcher(CP));
+ AddMatcher(new CheckComplexPatMatcher(CP, NextRecordedOperandNo));
// Record the right number of operands.
NextRecordedOperandNo += CP.getNumOperands();