1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

[AsmWriter] Rewrite module asm printing using StringRef::split.

No change in output intended.

llvm-svn: 239251
This commit is contained in:
Benjamin Kramer 2015-06-07 13:59:33 +00:00
parent de0ff53626
commit 44559ffece

View File

@ -2140,27 +2140,20 @@ void AssemblyWriter::printModule(const Module *M) {
Out << "target triple = \"" << M->getTargetTriple() << "\"\n";
if (!M->getModuleInlineAsm().empty()) {
// Split the string into lines, to make it easier to read the .ll file.
std::string Asm = M->getModuleInlineAsm();
size_t CurPos = 0;
size_t NewLine = Asm.find_first_of('\n', CurPos);
Out << '\n';
while (NewLine != std::string::npos) {
// Split the string into lines, to make it easier to read the .ll file.
StringRef Asm(M->getModuleInlineAsm());
do {
StringRef Front;
std::tie(Front, Asm) = Asm.split('\n');
// We found a newline, print the portion of the asm string from the
// last newline up to this newline.
Out << "module asm \"";
PrintEscapedString(std::string(Asm.begin()+CurPos, Asm.begin()+NewLine),
Out);
PrintEscapedString(Front, Out);
Out << "\"\n";
CurPos = NewLine+1;
NewLine = Asm.find_first_of('\n', CurPos);
}
std::string rest(Asm.begin()+CurPos, Asm.end());
if (!rest.empty()) {
Out << "module asm \"";
PrintEscapedString(rest, Out);
Out << "\"\n";
}
} while (!Asm.empty());
}
printTypeIdentities();