mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-04 21:31:03 +00:00
Remove locale-dependence of enum mangling and use existing function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172077 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
88abcde3b4
commit
12da505d93
@ -958,8 +958,12 @@ static std::string getEnumNameForToken(StringRef Str) {
|
|||||||
case ':': Res += "_COLON_"; break;
|
case ':': Res += "_COLON_"; break;
|
||||||
case '!': Res += "_EXCLAIM_"; break;
|
case '!': Res += "_EXCLAIM_"; break;
|
||||||
case '.': Res += "_DOT_"; break;
|
case '.': Res += "_DOT_"; break;
|
||||||
|
case '<': Res += "_LT_"; break;
|
||||||
|
case '>': Res += "_GT_"; break;
|
||||||
default:
|
default:
|
||||||
if (isalnum(*it))
|
if ((*it >= 'A' && *it <= 'Z') ||
|
||||||
|
(*it >= 'a' && *it <= 'z') ||
|
||||||
|
(*it >= '0' && *it <= '9'))
|
||||||
Res += *it;
|
Res += *it;
|
||||||
else
|
else
|
||||||
Res += "_" + utostr((unsigned) *it) + "_";
|
Res += "_" + utostr((unsigned) *it) + "_";
|
||||||
@ -1658,16 +1662,6 @@ void MatchableInfo::buildAliasResultOperands() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Modify a string so that it is suitable for use as an enum tag.
|
|
||||||
static std::string mangle(const std::string &Name) {
|
|
||||||
std::string MangledName = Name;
|
|
||||||
for (unsigned i = 0; i < MangledName.size(); ++i) {
|
|
||||||
if (!isalnum(MangledName[i]) && MangledName[i] != '_')
|
|
||||||
MangledName[i] = '_';
|
|
||||||
}
|
|
||||||
return MangledName;
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned getConverterOperandID(const std::string &Name,
|
static unsigned getConverterOperandID(const std::string &Name,
|
||||||
SetVector<std::string> &Table,
|
SetVector<std::string> &Table,
|
||||||
bool &IsNew) {
|
bool &IsNew) {
|
||||||
@ -1764,7 +1758,8 @@ static void emitConvertFuncs(CodeGenTarget &Target, StringRef ClassName,
|
|||||||
|
|
||||||
// Remember this converter for the kind enum.
|
// Remember this converter for the kind enum.
|
||||||
unsigned KindID = OperandConversionKinds.size();
|
unsigned KindID = OperandConversionKinds.size();
|
||||||
OperandConversionKinds.insert("CVT_" + mangle(AsmMatchConverter));
|
OperandConversionKinds.insert("CVT_" +
|
||||||
|
getEnumNameForToken(AsmMatchConverter));
|
||||||
|
|
||||||
// Add the converter row for this instruction.
|
// Add the converter row for this instruction.
|
||||||
ConversionTable.push_back(std::vector<uint8_t>());
|
ConversionTable.push_back(std::vector<uint8_t>());
|
||||||
@ -1772,7 +1767,8 @@ static void emitConvertFuncs(CodeGenTarget &Target, StringRef ClassName,
|
|||||||
ConversionTable.back().push_back(CVT_Done);
|
ConversionTable.back().push_back(CVT_Done);
|
||||||
|
|
||||||
// Add the handler to the conversion driver function.
|
// Add the handler to the conversion driver function.
|
||||||
CvtOS << " case CVT_" << mangle(AsmMatchConverter) << ":\n"
|
CvtOS << " case CVT_"
|
||||||
|
<< getEnumNameForToken(AsmMatchConverter) << ":\n"
|
||||||
<< " " << AsmMatchConverter << "(Inst, Operands);\n"
|
<< " " << AsmMatchConverter << "(Inst, Operands);\n"
|
||||||
<< " break;\n";
|
<< " break;\n";
|
||||||
|
|
||||||
@ -1810,7 +1806,7 @@ static void emitConvertFuncs(CodeGenTarget &Target, StringRef ClassName,
|
|||||||
// the index of its entry in the vector).
|
// the index of its entry in the vector).
|
||||||
std::string Name = "CVT_" + (Op.Class->isRegisterClass() ? "Reg" :
|
std::string Name = "CVT_" + (Op.Class->isRegisterClass() ? "Reg" :
|
||||||
Op.Class->RenderMethod);
|
Op.Class->RenderMethod);
|
||||||
Name = mangle(Name);
|
Name = getEnumNameForToken(Name);
|
||||||
|
|
||||||
bool IsNewConverter = false;
|
bool IsNewConverter = false;
|
||||||
unsigned ID = getConverterOperandID(Name, OperandConversionKinds,
|
unsigned ID = getConverterOperandID(Name, OperandConversionKinds,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user