Make the clang module container format selectable from the command line.
- introduces a new cc1 option -fmodule-format=[raw,obj]
with 'raw' being the default
- supports arbitrary module container formats that libclang is agnostic to
- adds the format to the module hash to avoid collisions
- splits the old PCHContainerOperations into PCHContainerWriter and
a PCHContainerReader.
Thanks to Richard Smith for reviewing this patch!
llvm-svn: 242499
diff --git a/clang/lib/Serialization/ModuleManager.cpp b/clang/lib/Serialization/ModuleManager.cpp
index 03d8ed0..2716194 100644
--- a/clang/lib/Serialization/ModuleManager.cpp
+++ b/clang/lib/Serialization/ModuleManager.cpp
@@ -139,7 +139,7 @@
}
// Initialize the stream.
- PCHContainerOps.ExtractPCH(New->Buffer->getMemBufferRef(), New->StreamFile);
+ PCHContainerRdr.ExtractPCH(New->Buffer->getMemBufferRef(), New->StreamFile);
}
if (ExpectedSignature) {
@@ -290,8 +290,8 @@
}
ModuleManager::ModuleManager(FileManager &FileMgr,
- const PCHContainerOperations &PCHContainerOps)
- : FileMgr(FileMgr), PCHContainerOps(PCHContainerOps), GlobalIndex(),
+ const PCHContainerReader &PCHContainerRdr)
+ : FileMgr(FileMgr), PCHContainerRdr(PCHContainerRdr), GlobalIndex(),
FirstVisitState(nullptr) {}
ModuleManager::~ModuleManager() {