When serializing SourceManager, we now serialize out absolute paths
to serialized source files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45183 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Basic/SourceManager.cpp b/Basic/SourceManager.cpp
index 22a7cf5..d7039b3 100644
--- a/Basic/SourceManager.cpp
+++ b/Basic/SourceManager.cpp
@@ -415,7 +415,19 @@
   S.FlushRecord();
   S.EmitPtr(this);
 
-  if (Entry) S.EmitCStr(Buffer->getBufferIdentifier());
+  if (Entry) {
+    llvm::sys::Path Fname(Buffer->getBufferIdentifier());
+
+    if (Fname.isAbsolute())
+      S.EmitCStr(Fname.c_str());
+    else {
+      // Create an absolute path.
+      // FIXME: This will potentially contain ".." and "." in the path.
+      llvm::sys::Path path = llvm::sys::Path::GetCurrentDirectory();
+      path.appendComponent(Fname.c_str());      
+      S.EmitCStr(path.c_str());
+    }
+  }
   else {
     const char* p = Buffer->getBufferStart();
     const char* e = Buffer->getBufferEnd();