diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2015-06-09 00:31:39 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2015-06-09 00:31:39 +0000 |
commit | 8b643559d46a03cba2617d3d60aa89f257ca0357 (patch) | |
tree | 727df1b429b98230b44eb792aa161bff0f96cdea /llvm/lib/MC/MCAsmInfo.cpp | |
parent | 003c2e937bcf85d834e3867268536091ee65042b (diff) | |
download | bcm5719-llvm-8b643559d46a03cba2617d3d60aa89f257ca0357.tar.gz bcm5719-llvm-8b643559d46a03cba2617d3d60aa89f257ca0357.zip |
MC: Add target hook to control symbol quoting
llvm-svn: 239370
Diffstat (limited to 'llvm/lib/MC/MCAsmInfo.cpp')
-rw-r--r-- | llvm/lib/MC/MCAsmInfo.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCAsmInfo.cpp b/llvm/lib/MC/MCAsmInfo.cpp index b5d1c2859e4..100dc7c3dc6 100644 --- a/llvm/lib/MC/MCAsmInfo.cpp +++ b/llvm/lib/MC/MCAsmInfo.cpp @@ -50,6 +50,7 @@ MCAsmInfo::MCAsmInfo() { Code64Directive = ".code64"; AssemblerDialect = 0; AllowAtInName = false; + SupportsQuotedNames = true; UseDataRegionDirectives = false; ZeroDirective = "\t.zero\t"; AsciiDirective = "\t.ascii\t"; @@ -137,3 +138,22 @@ MCAsmInfo::getExprForFDESymbol(const MCSymbol *Sym, const MCExpr *PC = MCSymbolRefExpr::create(PCSym, Context); return MCBinaryExpr::createSub(Res, PC, Context); } + +static bool isAcceptableChar(char C) { + return (C >= 'a' && C <= 'z') || (C >= 'A' && C <= 'Z') || + (C >= '0' && C <= '9') || C == '_' || C == '$' || C == '.' || C == '@'; +} + +bool MCAsmInfo::isValidUnquotedName(StringRef Name) const { + if (Name.empty()) + return false; + + // If any of the characters in the string is an unacceptable character, force + // quotes. + for (char C : Name) { + if (!isAcceptableChar(C)) + return false; + } + + return true; +} |