summaryrefslogtreecommitdiffstats
path: root/clang/Basic/SourceManager.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-12-18 22:12:19 +0000
committerTed Kremenek <kremenek@apple.com>2007-12-18 22:12:19 +0000
commit8c8947fb921e01d0937c47873a3c818ff20d1da0 (patch)
tree57967de5d5375600671f937b6098e3076f230b0e /clang/Basic/SourceManager.cpp
parent14020706d80572504c107fcf6a8d1aaad4d0f2ff (diff)
downloadbcm5719-llvm-8c8947fb921e01d0937c47873a3c818ff20d1da0.tar.gz
bcm5719-llvm-8c8947fb921e01d0937c47873a3c818ff20d1da0.zip
When serializing SourceManager, we now serialize out absolute paths
to serialized source files. llvm-svn: 45183
Diffstat (limited to 'clang/Basic/SourceManager.cpp')
-rw-r--r--clang/Basic/SourceManager.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/clang/Basic/SourceManager.cpp b/clang/Basic/SourceManager.cpp
index 22a7cf511f2..d7039b3651c 100644
--- a/clang/Basic/SourceManager.cpp
+++ b/clang/Basic/SourceManager.cpp
@@ -415,7 +415,19 @@ void ContentCache::Emit(llvm::Serializer& S) const {
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();
OpenPOWER on IntegriCloud