[clang] Reset CodeGenOptions fields for clean module/PCH builds (PR #138256)
via cfe-commits
cfe-commits at lists.llvm.org
Fri May 2 05:01:30 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Ayush Pareek (ayushpareek2003)
<details>
<summary>Changes</summary>
This change resets certain CodeGenOptions fields using = {} instead of .clear(), to clean up build-specific data when generating modules or PCH files. It helps make the output more consistent and easier to maintain
---
Full diff: https://github.com/llvm/llvm-project/pull/138256.diff
1 Files Affected:
- (modified) clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp (+11-10)
``````````diff
diff --git a/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp b/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
index b3016f90122df..5fbc502b15c3a 100644
--- a/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
+++ b/clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
@@ -209,20 +209,21 @@ void ModuleDepCollector::addOutputPaths(CowCompilerInvocation &CI,
void dependencies::resetBenignCodeGenOptions(frontend::ActionKind ProgramAction,
const LangOptions &LangOpts,
CodeGenOptions &CGOpts) {
- // TODO: Figure out better way to set options to their default value.
+ // For actions that produce modules or PCHs, reset options that could leak build-specific data.
if (ProgramAction == frontend::GenerateModule) {
- CGOpts.MainFileName.clear();
- CGOpts.DwarfDebugFlags.clear();
+ CGOpts.MainFileName = {};
+ CGOpts.DwarfDebugFlags = {};
}
+
if (ProgramAction == frontend::GeneratePCH ||
(ProgramAction == frontend::GenerateModule && !LangOpts.ModulesCodegen)) {
- CGOpts.DebugCompilationDir.clear();
- CGOpts.CoverageCompilationDir.clear();
- CGOpts.CoverageDataFile.clear();
- CGOpts.CoverageNotesFile.clear();
- CGOpts.ProfileInstrumentUsePath.clear();
- CGOpts.SampleProfileFile.clear();
- CGOpts.ProfileRemappingFile.clear();
+ CGOpts.DebugCompilationDir = {};
+ CGOpts.CoverageCompilationDir = {};
+ CGOpts.CoverageDataFile = {};
+ CGOpts.CoverageNotesFile = {};
+ CGOpts.ProfileInstrumentUsePath = {};
+ CGOpts.SampleProfileFile = {};
+ CGOpts.ProfileRemappingFile = {};
}
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/138256
More information about the cfe-commits
mailing list