summaryrefslogtreecommitdiff
path: root/lib/Target/Mangler.cpp
diff options
context:
space:
mode:
authorMon P Wang <wangmp@apple.com>2010-04-29 04:00:56 +0000
committerMon P Wang <wangmp@apple.com>2010-04-29 04:00:56 +0000
commitb9a01bcf486814a44098745920d43daaf9f7c260 (patch)
treefe1919c5492576c5520dbbb6597cfdf2869a2f88 /lib/Target/Mangler.cpp
parent16e4ace95196c2b34246746b7481a8de3d715c19 (diff)
downloadllvm-b9a01bcf486814a44098745920d43daaf9f7c260.tar.gz
llvm-b9a01bcf486814a44098745920d43daaf9f7c260.tar.bz2
llvm-b9a01bcf486814a44098745920d43daaf9f7c260.tar.xz
Add support for assemblers that don't support periods in a name
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102594 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Mangler.cpp')
-rw-r--r--lib/Target/Mangler.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/Target/Mangler.cpp b/lib/Target/Mangler.cpp
index 1d5c51164e..4ef017ab92 100644
--- a/lib/Target/Mangler.cpp
+++ b/lib/Target/Mangler.cpp
@@ -22,11 +22,12 @@
#include "llvm/ADT/Twine.h"
using namespace llvm;
-static bool isAcceptableChar(char C) {
+static bool isAcceptableChar(char C, bool AllowPeriod) {
if ((C < 'a' || C > 'z') &&
(C < 'A' || C > 'Z') &&
(C < '0' || C > '9') &&
- C != '_' && C != '$' && C != '.' && C != '@')
+ C != '_' && C != '$' && C != '@' &&
+ !(AllowPeriod && C == '.'))
return false;
return true;
}
@@ -54,8 +55,9 @@ static bool NameNeedsEscaping(StringRef Str, const MCAsmInfo &MAI) {
// If any of the characters in the string is an unacceptable character, force
// quotes.
+ bool AllowPeriod = MAI.doesAllowPeriodsInName();
for (unsigned i = 0, e = Str.size(); i != e; ++i)
- if (!isAcceptableChar(Str[i]))
+ if (!isAcceptableChar(Str[i], AllowPeriod))
return true;
return false;
}
@@ -70,9 +72,10 @@ static void appendMangledName(SmallVectorImpl<char> &OutName, StringRef Str,
MangleLetter(OutName, Str[0]);
Str = Str.substr(1);
}
-
+
+ bool AllowPeriod = MAI.doesAllowPeriodsInName();
for (unsigned i = 0, e = Str.size(); i != e; ++i) {
- if (!isAcceptableChar(Str[i]))
+ if (!isAcceptableChar(Str[i], AllowPeriod))
MangleLetter(OutName, Str[i]);
else
OutName.push_back(Str[i]);