[PATCH] D57590: [ASTImporter] Improve import of FileID.
Balázs Kéri via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 27 08:32:12 PST 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rC355000: [ASTImporter] Improve import of FileID. (authored by balazske, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D57590?vs=184760&id=188553#toc
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D57590/new/
https://reviews.llvm.org/D57590
Files:
lib/AST/ASTImporter.cpp
Index: lib/AST/ASTImporter.cpp
===================================================================
--- lib/AST/ASTImporter.cpp
+++ lib/AST/ASTImporter.cpp
@@ -8289,14 +8289,21 @@
// than mmap the files several times.
const FileEntry *Entry =
ToFileManager.getFile(Cache->OrigEntry->getName());
- if (!Entry)
- return {};
- ToID = ToSM.createFileID(Entry, ToIncludeLoc,
- FromSLoc.getFile().getFileCharacteristic());
- } else {
+ // FIXME: The filename may be a virtual name that does probably not
+ // point to a valid file and we get no Entry here. In this case try with
+ // the memory buffer below.
+ if (Entry)
+ ToID = ToSM.createFileID(Entry, ToIncludeLoc,
+ FromSLoc.getFile().getFileCharacteristic());
+ }
+ if (ToID.isInvalid()) {
// FIXME: We want to re-use the existing MemoryBuffer!
- const llvm::MemoryBuffer *FromBuf =
- Cache->getBuffer(FromContext.getDiagnostics(), FromSM);
+ bool Invalid = true;
+ const llvm::MemoryBuffer *FromBuf = Cache->getBuffer(
+ FromContext.getDiagnostics(), FromSM, SourceLocation{}, &Invalid);
+ if (!FromBuf || Invalid)
+ return {};
+
std::unique_ptr<llvm::MemoryBuffer> ToBuf =
llvm::MemoryBuffer::getMemBufferCopy(FromBuf->getBuffer(),
FromBuf->getBufferIdentifier());
@@ -8305,6 +8312,8 @@
}
}
+ assert(ToID.isValid() && "Unexpected invalid fileID was created.");
+
ImportedFileIDs[FromID] = ToID;
return ToID;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D57590.188553.patch
Type: text/x-patch
Size: 1638 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190227/a5a89ec4/attachment.bin>
More information about the cfe-commits
mailing list