diff options
author | Chris Lattner <sabre@nondot.org> | 2010-03-19 00:18:23 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-03-19 00:18:23 +0000 |
commit | b61e09de6d0cd7241ddc6dee3efef416552eec3b (patch) | |
tree | 0ea96d6361d7fb8afa1cd3eac51a1b30d0ca8d6d /utils | |
parent | c3e6859d8dc9014fee8023497153add9a2148f22 (diff) | |
download | llvm-b61e09de6d0cd7241ddc6dee3efef416552eec3b.tar.gz llvm-b61e09de6d0cd7241ddc6dee3efef416552eec3b.tar.bz2 llvm-b61e09de6d0cd7241ddc6dee3efef416552eec3b.tar.xz |
don't go through getInstructions().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98906 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r-- | utils/TableGen/AsmMatcherEmitter.cpp | 21 | ||||
-rw-r--r-- | utils/TableGen/CodeGenDAGPatterns.cpp | 10 | ||||
-rw-r--r-- | utils/TableGen/CodeGenTarget.h | 2 |
3 files changed, 17 insertions, 16 deletions
diff --git a/utils/TableGen/AsmMatcherEmitter.cpp b/utils/TableGen/AsmMatcherEmitter.cpp index 7446ba0efd..82b064ed33 100644 --- a/utils/TableGen/AsmMatcherEmitter.cpp +++ b/utils/TableGen/AsmMatcherEmitter.cpp @@ -844,19 +844,20 @@ void AsmMatcherInfo::BuildInfo(CodeGenTarget &Target) { // Parse the instructions; we need to do this first so that we can gather the // singleton register classes. std::set<std::string> SingletonRegisterNames; - for (std::map<std::string, CodeGenInstruction>::const_iterator - it = Target.getInstructions().begin(), - ie = Target.getInstructions().end(); - it != ie; ++it) { - const CodeGenInstruction &CGI = it->second; + + std::vector<const CodeGenInstruction*> InstrList; + Target.getInstructionsByEnumValue(InstrList); + + for (unsigned i = 0, e = InstrList.size(); i != e; ++i) { + const CodeGenInstruction &CGI = *InstrList[i]; - if (!StringRef(it->first).startswith(MatchPrefix)) + if (!StringRef(CGI.TheDef->getName()).startswith(MatchPrefix)) continue; - OwningPtr<InstructionInfo> II(new InstructionInfo); + OwningPtr<InstructionInfo> II(new InstructionInfo()); - II->InstrName = it->first; - II->Instr = &it->second; + II->InstrName = CGI.TheDef->getName(); + II->Instr = &CGI; II->AsmString = FlattenVariants(CGI.AsmString, 0); // Remove comments from the asm string. @@ -869,7 +870,7 @@ void AsmMatcherInfo::BuildInfo(CodeGenTarget &Target) { TokenizeAsmString(II->AsmString, II->Tokens); // Ignore instructions which shouldn't be matched. - if (!IsAssemblerInstruction(it->first, CGI, II->Tokens)) + if (!IsAssemblerInstruction(CGI.TheDef->getName(), CGI, II->Tokens)) continue; // Collect singleton registers, if used. diff --git a/utils/TableGen/CodeGenDAGPatterns.cpp b/utils/TableGen/CodeGenDAGPatterns.cpp index fafcd8c30e..8c07c4a80c 100644 --- a/utils/TableGen/CodeGenDAGPatterns.cpp +++ b/utils/TableGen/CodeGenDAGPatterns.cpp @@ -2362,11 +2362,11 @@ void CodeGenDAGPatterns::AddPatternToMatch(const TreePattern *Pattern, void CodeGenDAGPatterns::InferInstructionFlags() { - std::map<std::string, CodeGenInstruction> &InstrDescs = - Target.getInstructions(); - for (std::map<std::string, CodeGenInstruction>::iterator - II = InstrDescs.begin(), E = InstrDescs.end(); II != E; ++II) { - CodeGenInstruction &InstInfo = II->second; + std::vector<const CodeGenInstruction*> Instructions; + Target.getInstructionsByEnumValue(Instructions); + for (unsigned i = 0, e = Instructions.size(); i != e; ++i) { + CodeGenInstruction &InstInfo = + const_cast<CodeGenInstruction &>(*Instructions[i]); // Determine properties of the instruction from its pattern. bool MayStore, MayLoad, HasSideEffects; InferFromPattern(InstInfo, MayStore, MayLoad, HasSideEffects, *this); diff --git a/utils/TableGen/CodeGenTarget.h b/utils/TableGen/CodeGenTarget.h index d20e868da7..d48e49a8c5 100644 --- a/utils/TableGen/CodeGenTarget.h +++ b/utils/TableGen/CodeGenTarget.h @@ -185,6 +185,7 @@ public: /// getInstructions - Return all of the instructions defined for this target. /// +private: const std::map<std::string, CodeGenInstruction> &getInstructions() const { if (Instructions.empty()) ReadInstructions(); return Instructions; @@ -193,7 +194,6 @@ public: if (Instructions.empty()) ReadInstructions(); return Instructions; } -private: CodeGenInstruction &getInstruction(const std::string &Name) const { const std::map<std::string, CodeGenInstruction> &Insts = getInstructions(); assert(Insts.count(Name) && "Not an instruction!"); |