mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-23 15:29:51 +00:00
reduce duplicate mangling logic by using MCSymbol::printMangledName.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93351 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4564ec9ca7
commit
a46a34431c
@ -35,6 +35,7 @@
|
|||||||
#include "llvm/CodeGen/IntrinsicLowering.h"
|
#include "llvm/CodeGen/IntrinsicLowering.h"
|
||||||
#include "llvm/Transforms/Scalar.h"
|
#include "llvm/Transforms/Scalar.h"
|
||||||
#include "llvm/MC/MCAsmInfo.h"
|
#include "llvm/MC/MCAsmInfo.h"
|
||||||
|
#include "llvm/MC/MCSymbol.h"
|
||||||
#include "llvm/Target/TargetData.h"
|
#include "llvm/Target/TargetData.h"
|
||||||
#include "llvm/Target/TargetRegistry.h"
|
#include "llvm/Target/TargetRegistry.h"
|
||||||
#include "llvm/Support/CallSite.h"
|
#include "llvm/Support/CallSite.h"
|
||||||
@ -343,31 +344,11 @@ namespace {
|
|||||||
char CWriter::ID = 0;
|
char CWriter::ID = 0;
|
||||||
|
|
||||||
|
|
||||||
static bool isAcceptableChar(char C) {
|
|
||||||
if ((C < 'a' || C > 'z') && (C < 'A' || C > 'Z') &&
|
|
||||||
(C < '0' || C > '9') && C != '_' && C != '$' && C != '@')
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char HexDigit(int V) {
|
|
||||||
return V < 10 ? V+'0' : V+'A'-10;
|
|
||||||
}
|
|
||||||
|
|
||||||
static std::string Mangle(const std::string &S) {
|
static std::string Mangle(const std::string &S) {
|
||||||
std::string Result;
|
std::string Result;
|
||||||
|
raw_string_ostream OS(Result);
|
||||||
for (unsigned i = 0, e = S.size(); i != e; ++i)
|
MCSymbol::printMangledName(S, OS, 0);
|
||||||
if (isAcceptableChar(S[i]))
|
return OS.str();
|
||||||
Result += S[i];
|
|
||||||
else {
|
|
||||||
Result += '_';
|
|
||||||
Result += HexDigit((S[i] >> 4) & 15);
|
|
||||||
Result += HexDigit(S[i] & 15);
|
|
||||||
Result += '_';
|
|
||||||
}
|
|
||||||
|
|
||||||
return Result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user