enhance comment output to specify what recorded slot

numbers a ComplexPat will match into.

llvm-svn: 97696
This commit is contained in:
Chris Lattner 2010-03-04 00:28:05 +00:00
parent 6abe39c61e
commit 90e1c5fa44
3 changed files with 12 additions and 5 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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();