[llvm-commits] [llvm] r68741 - in /llvm/trunk: include/llvm/CodeGen/AsmPrinter.h lib/CodeGen/AsmPrinter/AsmPrinter.cpp lib/CodeGen/AsmPrinter/DwarfWriter.cpp
Bill Wendling
isanbard at gmail.com
Thu Apr 9 16:51:31 PDT 2009
Author: void
Date: Thu Apr 9 18:51:31 2009
New Revision: 68741
URL: http://llvm.org/viewvc/llvm-project?rev=68741&view=rev
Log:
StringMap<DIE*>::iterator::first() returns a pointer to the first character of
the key. This will cause it to create a new std::string, which isn't
wanted. Instead, pass back the "const char*". Modify the EmitString() method to
take a "const char*".
Modified:
llvm/trunk/include/llvm/CodeGen/AsmPrinter.h
llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
Modified: llvm/trunk/include/llvm/CodeGen/AsmPrinter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/AsmPrinter.h?rev=68741&r1=68740&r2=68741&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/AsmPrinter.h (original)
+++ llvm/trunk/include/llvm/CodeGen/AsmPrinter.h Thu Apr 9 18:51:31 2009
@@ -285,7 +285,8 @@
/// Special characters are emitted properly.
/// @verbatim (Eg. '\t') @endverbatim
void EmitString(const std::string &String) const;
-
+ void EmitString(const char *String, unsigned Size) const;
+
/// EmitFile - Emit a .file directive.
void EmitFile(unsigned Number, const std::string &Name) const;
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=68741&r1=68740&r2=68741&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Thu Apr 9 18:51:31 2009
@@ -727,13 +727,17 @@
/// Special characters are emitted properly.
/// \literal (Eg. '\t') \endliteral
void AsmPrinter::EmitString(const std::string &String) const {
+ EmitString(String.c_str(), String.size());
+}
+
+void AsmPrinter::EmitString(const char *String, unsigned Size) const {
const char* AscizDirective = TAI->getAscizDirective();
if (AscizDirective)
O << AscizDirective;
else
O << TAI->getAsciiDirective();
O << '\"';
- for (unsigned i = 0, N = String.size(); i < N; ++i)
+ for (unsigned i = 0; i < Size; ++i)
printStringChar(O, String[i]);
if (AscizDirective)
O << '\"';
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp?rev=68741&r1=68740&r2=68741&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp Thu Apr 9 18:51:31 2009
@@ -2664,13 +2664,13 @@
Asm->EOL("Compilation Unit Length");
StringMap<DIE*> &Globals = Unit->getGlobals();
- for (StringMap<DIE*>::iterator
+ for (StringMap<DIE*>::const_iterator
GI = Globals.begin(), GE = Globals.end(); GI != GE; ++GI) {
- const std::string &Name = GI->first();
+ const char *Name = GI->getKeyData();
DIE * Entity = GI->second;
Asm->EmitInt32(Entity->getOffset()); Asm->EOL("DIE offset");
- Asm->EmitString(Name); Asm->EOL("External Name");
+ Asm->EmitString(Name, strlen(Name)); Asm->EOL("External Name");
}
Asm->EmitInt32(0); Asm->EOL("End Mark");
More information about the llvm-commits
mailing list