summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-02-15 19:04:54 +0000
committerChris Lattner <sabre@nondot.org>2008-02-15 19:04:54 +0000
commit7b1431785bbf9eceeeff4544f5f08133afd0b537 (patch)
tree6a07f0bf16c7c9727010e3b92954b3fce366a4f7 /llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
parent318c41f9e8a4bb4aad9d48e1386881c73b872d17 (diff)
downloadbcm5719-llvm-7b1431785bbf9eceeeff4544f5f08133afd0b537.tar.gz
bcm5719-llvm-7b1431785bbf9eceeeff4544f5f08133afd0b537.zip
Handle \n's in value names for more targets. The asm printers
really really really need refactoring :( llvm-svn: 47171
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp')
-rw-r--r--llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp27
1 files changed, 21 insertions, 6 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
index 605dc128db4..acc6570e976 100644
--- a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
+++ b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
@@ -639,6 +639,15 @@ bool LinuxAsmPrinter::doInitialization(Module &M) {
return Result;
}
+/// PrintUnmangledNameSafely - Print out the printable characters in the name.
+/// Don't print things like \n or \0.
+static void PrintUnmangledNameSafely(const Value *V, std::ostream &OS) {
+ for (const char *Name = V->getNameStart(), *E = Name+V->getNameLen();
+ Name != E; ++Name)
+ if (isprint(*Name))
+ OS << *Name;
+}
+
bool LinuxAsmPrinter::doFinalization(Module &M) {
const TargetData *TD = TM.getTargetData();
@@ -680,7 +689,9 @@ bool LinuxAsmPrinter::doFinalization(Module &M) {
SwitchToDataSection("\t.data", I);
O << ".comm " << name << "," << Size;
}
- O << "\t\t" << TAI->getCommentString() << " '" << I->getName() << "'\n";
+ O << "\t\t" << TAI->getCommentString() << " '";
+ PrintUnmangledNameSafely(I, O);
+ O << "'\n";
} else {
switch (I->getLinkage()) {
case GlobalValue::LinkOnceLinkage:
@@ -727,8 +738,9 @@ bool LinuxAsmPrinter::doFinalization(Module &M) {
}
EmitAlignment(Align, I);
- O << name << ":\t\t\t\t" << TAI->getCommentString() << " '"
- << I->getName() << "'\n";
+ O << name << ":\t\t\t\t" << TAI->getCommentString() << " '";
+ PrintUnmangledNameSafely(I, O);
+ O << "'\n";
// If the initializer is a extern weak symbol, remember to emit the weak
// reference!
@@ -942,7 +954,9 @@ bool DarwinAsmPrinter::doFinalization(Module &M) {
if (Subtarget.isDarwin9())
O << "," << Align;
}
- O << "\t\t" << TAI->getCommentString() << " '" << I->getName() << "'\n";
+ O << "\t\t" << TAI->getCommentString() << " '";
+ PrintUnmangledNameSafely(I, O);
+ O << "'\n";
} else {
switch (I->getLinkage()) {
case GlobalValue::LinkOnceLinkage:
@@ -999,8 +1013,9 @@ bool DarwinAsmPrinter::doFinalization(Module &M) {
}
EmitAlignment(Align, I);
- O << name << ":\t\t\t\t" << TAI->getCommentString() << " '"
- << I->getName() << "'\n";
+ O << name << ":\t\t\t\t" << TAI->getCommentString() << " '";
+ PrintUnmangledNameSafely(I, O);
+ O << "'\n";
// If the initializer is a extern weak symbol, remember to emit the weak
// reference!
OpenPOWER on IntegriCloud