Use existing PrintEscapedString in AssemblyWriter
authorTeresa Johnson <tejohnson@google.com>
Wed, 30 Mar 2016 22:17:28 +0000 (22:17 +0000)
committerTeresa Johnson <tejohnson@google.com>
Wed, 30 Mar 2016 22:17:28 +0000 (22:17 +0000)
r264884 introduced a helper to escape the backslashes in the source file
path, but I since discovered an existing mechanism to escape strings.

llvm-svn: 264936

llvm/lib/IR/AsmWriter.cpp
llvm/test/Assembler/source-filename-backslash.ll

index 4750cf6..c64291c 100644 (file)
@@ -2203,22 +2203,6 @@ void AssemblyWriter::writeOperandBundles(ImmutableCallSite CS) {
   Out << " ]";
 }
 
-/// Escape any backslashes in the source file (e.g. Windows paths)
-/// before emitting, so that it is parsed properly by the lexer on input.
-static void EscapeBackslashes(std::string Str,
-                              SmallVectorImpl<char> &Res) {
-  for (auto C : Str) {
-    switch (C) {
-    default:
-      break;
-    case '\\':
-      Res.push_back('\\');
-      break;
-    }
-    Res.push_back(C);
-  }
-}
-
 void AssemblyWriter::printModule(const Module *M) {
   Machine.initialize();
 
@@ -2232,9 +2216,9 @@ void AssemblyWriter::printModule(const Module *M) {
     Out << "; ModuleID = '" << M->getModuleIdentifier() << "'\n";
 
   if (!M->getSourceFileName().empty()) {
-    SmallString<128> EscapedName;
-    EscapeBackslashes(M->getSourceFileName(), EscapedName);
-    Out << "source_filename = \"" << EscapedName << "\"\n";
+    Out << "source_filename = \"";
+    PrintEscapedString(M->getSourceFileName(), Out);
+    Out << "\"\n";
   }
 
   const std::string &DL = M->getDataLayoutStr();
index 27b5198..8669401 100644 (file)
@@ -4,5 +4,5 @@
 
 ; RUN: llvm-as < %s | llvm-dis | FileCheck %s
 
-; CHECK: source_filename = "C:\\path\\with\\backslashes\\test.cc"
-source_filename = "C:\\path\\with\\backslashes\\test.cc"
+; CHECK: source_filename = "C:\5Cpath\5Cwith\5Cbackslashes\5Ctest.cc"
+source_filename = "C:\5Cpath\5Cwith\5Cbackslashes\5Ctest.cc"