diff options
Diffstat (limited to 'llvm/lib/TableGen')
-rw-r--r-- | llvm/lib/TableGen/TGParser.cpp | 19 | ||||
-rw-r--r-- | llvm/lib/TableGen/TGParser.h | 2 |
2 files changed, 9 insertions, 12 deletions
diff --git a/llvm/lib/TableGen/TGParser.cpp b/llvm/lib/TableGen/TGParser.cpp index b227de88896..4b7ccdca9b1 100644 --- a/llvm/lib/TableGen/TGParser.cpp +++ b/llvm/lib/TableGen/TGParser.cpp @@ -459,12 +459,12 @@ MultiClass *TGParser::ParseMultiClassID() { return nullptr; } - auto it = MultiClasses.find(Lex.getCurStrVal()); - if (it == MultiClasses.end()) + MultiClass *Result = MultiClasses[Lex.getCurStrVal()]; + if (!Result) TokError("Couldn't find multiclass '" + Lex.getCurStrVal() + "'"); Lex.Lex(); - return &it->second; + return Result; } /// ParseSubClassReference - Parse a reference to a subclass or to a templated @@ -2290,13 +2290,11 @@ bool TGParser::ParseMultiClass() { return TokError("expected identifier after multiclass for name"); std::string Name = Lex.getCurStrVal(); - auto Result = - MultiClasses.insert(std::make_pair(Name, - MultiClass(Name, Lex.getLoc(),Records))); - if (!Result.second) + if (MultiClasses.count(Name)) return TokError("multiclass '" + Name + "' already defined"); - CurMultiClass = &Result.first->second; + CurMultiClass = MultiClasses[Name] = new MultiClass(Name, + Lex.getLoc(), Records); Lex.Lex(); // Eat the identifier. // If there are template args, parse them. @@ -2557,9 +2555,8 @@ bool TGParser::ParseDefm(MultiClass *CurMultiClass) { // To instantiate a multiclass, we need to first get the multiclass, then // instantiate each def contained in the multiclass with the SubClassRef // template parameters. - auto it = MultiClasses.find(Ref.Rec->getName()); - assert(it != MultiClasses.end() && "Didn't lookup multiclass correctly?"); - MultiClass *MC = &it->second; + MultiClass *MC = MultiClasses[Ref.Rec->getName()]; + assert(MC && "Didn't lookup multiclass correctly?"); std::vector<Init*> &TemplateVals = Ref.TemplateArgs; // Verify that the correct number of template arguments were specified. diff --git a/llvm/lib/TableGen/TGParser.h b/llvm/lib/TableGen/TGParser.h index 45f418ab344..79994cbc1a6 100644 --- a/llvm/lib/TableGen/TGParser.h +++ b/llvm/lib/TableGen/TGParser.h @@ -55,7 +55,7 @@ namespace llvm { class TGParser { TGLexer Lex; std::vector<std::vector<LetRecord> > LetStack; - std::map<std::string, MultiClass> MultiClasses; + std::map<std::string, MultiClass*> MultiClasses; /// Loops - Keep track of any foreach loops we are within. /// |