aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Serialization/GeneratePCH.cpp
diff options
context:
space:
mode:
authorChuanqi Xu <yedeng.yd@linux.alibaba.com>2024-04-30 13:28:52 +0800
committerChuanqi Xu <yedeng.yd@linux.alibaba.com>2024-04-30 13:30:31 +0800
commit18268ac0f48d93c2bcddb69732761971669c09ab (patch)
treee4872e9710f71d7c242bafc88ff1add59f35e06b /clang/lib/Serialization/GeneratePCH.cpp
parentbd72f7b0ab98531ab579fafe79c7a8967994583a (diff)
downloadllvm-18268ac0f48d93c2bcddb69732761971669c09ab.zip
llvm-18268ac0f48d93c2bcddb69732761971669c09ab.tar.gz
llvm-18268ac0f48d93c2bcddb69732761971669c09ab.tar.bz2
[NFC] [C++20] [Modules] Use new class CXX20ModulesGenerator to generate module file for C++20 modules instead of PCHGenerator
Previously we're re-using PCHGenerator to generate the module file for C++20 modules. But this is slighty more or less odd. This patch tries to use a new class 'CXX20ModulesGenerator' to generate the module file for C++20 modules.
Diffstat (limited to 'clang/lib/Serialization/GeneratePCH.cpp')
-rw-r--r--clang/lib/Serialization/GeneratePCH.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/clang/lib/Serialization/GeneratePCH.cpp b/clang/lib/Serialization/GeneratePCH.cpp
index bed7439..7b97b73 100644
--- a/clang/lib/Serialization/GeneratePCH.cpp
+++ b/clang/lib/Serialization/GeneratePCH.cpp
@@ -88,31 +88,28 @@ ASTDeserializationListener *PCHGenerator::GetASTDeserializationListener() {
return &Writer;
}
-ReducedBMIGenerator::ReducedBMIGenerator(Preprocessor &PP,
- InMemoryModuleCache &ModuleCache,
- StringRef OutputFile)
+CXX20ModulesGenerator::CXX20ModulesGenerator(Preprocessor &PP,
+ InMemoryModuleCache &ModuleCache,
+ StringRef OutputFile,
+ bool GeneratingReducedBMI)
: PCHGenerator(
PP, ModuleCache, OutputFile, llvm::StringRef(),
std::make_shared<PCHBuffer>(),
/*Extensions=*/ArrayRef<std::shared_ptr<ModuleFileExtension>>(),
/*AllowASTWithErrors*/ false, /*IncludeTimestamps=*/false,
/*BuildingImplicitModule=*/false, /*ShouldCacheASTInMemory=*/false,
- /*GeneratingReducedBMI=*/true) {}
+ GeneratingReducedBMI) {}
-Module *ReducedBMIGenerator::getEmittingModule(ASTContext &Ctx) {
+Module *CXX20ModulesGenerator::getEmittingModule(ASTContext &Ctx) {
Module *M = Ctx.getCurrentNamedModule();
assert(M && M->isNamedModuleUnit() &&
- "ReducedBMIGenerator should only be used with C++20 Named modules.");
+ "CXX20ModulesGenerator should only be used with C++20 Named modules.");
return M;
}
-void ReducedBMIGenerator::HandleTranslationUnit(ASTContext &Ctx) {
- // We need to do this to make sure the size of reduced BMI not to be larger
- // than full BMI.
- //
+void CXX20ModulesGenerator::HandleTranslationUnit(ASTContext &Ctx) {
// FIMXE: We'd better to wrap such options to a new class ASTWriterOptions
// since this is not about searching header really.
- // FIXME2: We'd better to move the class writing full BMI with reduced BMI.
HeaderSearchOptions &HSOpts =
getPreprocessor().getHeaderSearchInfo().getHeaderSearchOpts();
HSOpts.ModulesSkipDiagnosticOptions = true;