mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 05:32:25 +00:00
Don't convert enum to strings just to put them in the uniquing map. Use the enum directly. Only convert to a string for printing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234463 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
174f04eefb
commit
684de8845e
@ -597,7 +597,7 @@ void DisassemblerTables::emitInstructionInfo(raw_ostream &o,
|
|||||||
o << "static const struct OperandSpecifier x86OperandSets[]["
|
o << "static const struct OperandSpecifier x86OperandSets[]["
|
||||||
<< X86_MAX_OPERANDS << "] = {\n";
|
<< X86_MAX_OPERANDS << "] = {\n";
|
||||||
|
|
||||||
typedef std::vector<std::pair<const char *, const char *> > OperandListTy;
|
typedef std::vector<std::pair<OperandEncoding, OperandType> > OperandListTy;
|
||||||
std::map<OperandListTy, unsigned> OperandSets;
|
std::map<OperandListTy, unsigned> OperandSets;
|
||||||
|
|
||||||
unsigned OperandSetNum = 0;
|
unsigned OperandSetNum = 0;
|
||||||
@ -606,12 +606,10 @@ void DisassemblerTables::emitInstructionInfo(raw_ostream &o,
|
|||||||
|
|
||||||
for (unsigned OperandIndex = 0; OperandIndex < X86_MAX_OPERANDS;
|
for (unsigned OperandIndex = 0; OperandIndex < X86_MAX_OPERANDS;
|
||||||
++OperandIndex) {
|
++OperandIndex) {
|
||||||
const char *Encoding =
|
OperandEncoding Encoding = (OperandEncoding)InstructionSpecifiers[Index]
|
||||||
stringForOperandEncoding((OperandEncoding)InstructionSpecifiers[Index]
|
.operands[OperandIndex].encoding;
|
||||||
.operands[OperandIndex].encoding);
|
OperandType Type = (OperandType)InstructionSpecifiers[Index]
|
||||||
const char *Type =
|
.operands[OperandIndex].type;
|
||||||
stringForOperandType((OperandType)InstructionSpecifiers[Index]
|
|
||||||
.operands[OperandIndex].type);
|
|
||||||
OperandList.push_back(std::make_pair(Encoding, Type));
|
OperandList.push_back(std::make_pair(Encoding, Type));
|
||||||
}
|
}
|
||||||
unsigned &N = OperandSets[OperandList];
|
unsigned &N = OperandSets[OperandList];
|
||||||
@ -621,8 +619,9 @@ void DisassemblerTables::emitInstructionInfo(raw_ostream &o,
|
|||||||
|
|
||||||
o << " { /* " << (OperandSetNum - 1) << " */\n";
|
o << " { /* " << (OperandSetNum - 1) << " */\n";
|
||||||
for (unsigned i = 0, e = OperandList.size(); i != e; ++i) {
|
for (unsigned i = 0, e = OperandList.size(); i != e; ++i) {
|
||||||
o << " { " << OperandList[i].first << ", "
|
const char *Encoding = stringForOperandEncoding(OperandList[i].first);
|
||||||
<< OperandList[i].second << " },\n";
|
const char *Type = stringForOperandType(OperandList[i].second);
|
||||||
|
o << " { " << Encoding << ", " << Type << " },\n";
|
||||||
}
|
}
|
||||||
o << " },\n";
|
o << " },\n";
|
||||||
}
|
}
|
||||||
@ -640,12 +639,10 @@ void DisassemblerTables::emitInstructionInfo(raw_ostream &o,
|
|||||||
OperandListTy OperandList;
|
OperandListTy OperandList;
|
||||||
for (unsigned OperandIndex = 0; OperandIndex < X86_MAX_OPERANDS;
|
for (unsigned OperandIndex = 0; OperandIndex < X86_MAX_OPERANDS;
|
||||||
++OperandIndex) {
|
++OperandIndex) {
|
||||||
const char *Encoding =
|
OperandEncoding Encoding = (OperandEncoding)InstructionSpecifiers[index]
|
||||||
stringForOperandEncoding((OperandEncoding)InstructionSpecifiers[index]
|
.operands[OperandIndex].encoding;
|
||||||
.operands[OperandIndex].encoding);
|
OperandType Type = (OperandType)InstructionSpecifiers[index]
|
||||||
const char *Type =
|
.operands[OperandIndex].type;
|
||||||
stringForOperandType((OperandType)InstructionSpecifiers[index]
|
|
||||||
.operands[OperandIndex].type);
|
|
||||||
OperandList.push_back(std::make_pair(Encoding, Type));
|
OperandList.push_back(std::make_pair(Encoding, Type));
|
||||||
}
|
}
|
||||||
o.indent(i * 2) << (OperandSets[OperandList] - 1) << ",\n";
|
o.indent(i * 2) << (OperandSets[OperandList] - 1) << ",\n";
|
||||||
|
Loading…
Reference in New Issue
Block a user