prefix captured value names with $ so they look like

variables.  Use the fancy OpNo variable instead of i,
which has the right index including chains.

llvm-svn: 96436
This commit is contained in:
Chris Lattner 2010-02-17 01:27:29 +00:00
parent 6e98127ab8
commit a6df2a60e5
2 changed files with 4 additions and 5 deletions

View File

@ -131,10 +131,10 @@ class RecordMatcherNode : public MatcherNodeWithChild {
/// should only be used for comment generation not anything semantic.
std::string WhatFor;
public:
RecordMatcherNode(StringRef whatfor)
RecordMatcherNode(const std::string &whatfor)
: MatcherNodeWithChild(Record), WhatFor(whatfor) {}
StringRef getWhatFor() const { return WhatFor; }
const std::string &getWhatFor() const { return WhatFor; }
static inline bool classof(const MatcherNode *N) {
return N->getKind() == Record;

View File

@ -249,7 +249,7 @@ void MatcherGen::EmitOperatorMatchCode(const TreePatternNode *N,
for (unsigned i = 0, e = N->getNumChildren(); i != e; ++i, ++OpNo) {
// Get the code suitable for matching this child. Move to the child, check
// it then move back to the parent.
AddMatcherNode(new MoveChildMatcherNode(i));
AddMatcherNode(new MoveChildMatcherNode(OpNo));
EmitMatchCode(N->getChild(i), NodeNoTypes->getChild(i));
AddMatcherNode(new MoveParentMatcherNode());
}
@ -267,7 +267,6 @@ void MatcherGen::EmitMatchCode(const TreePatternNode *N,
InferPossibleTypes();
}
// If this node has a name associated with it, capture it in VariableMap. If
// we already saw this in the pattern, emit code to verify dagness.
if (!N->getName().empty()) {
@ -288,7 +287,7 @@ void MatcherGen::EmitMatchCode(const TreePatternNode *N,
NumRecorded += 2; // Input and output chains.
} else {
// If it is a normal named node, we must emit a 'Record' opcode.
AddMatcherNode(new RecordMatcherNode(N->getName()));
AddMatcherNode(new RecordMatcherNode("$" + N->getName()));
NumRecorded = 1;
}
NextRecordedOperandNo += NumRecorded;