aboutsummaryrefslogtreecommitdiff
path: root/src/zig_clang_driver.cpp
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2025-08-30 21:00:53 +0200
committerGitHub <noreply@github.com>2025-08-30 21:00:53 +0200
commit151314346d7c4ed4da13a0a0146e1016c9ca5dd7 (patch)
treeaf691b095926bb24babb267712690a952785453b /src/zig_clang_driver.cpp
parente2fdaea0b351860da5f560cbe0ec8f056b8047fd (diff)
parent8896046b11271c5979d590fc3e1aab67d45436e5 (diff)
downloadzig-151314346d7c4ed4da13a0a0146e1016c9ca5dd7.tar.gz
zig-151314346d7c4ed4da13a0a0146e1016c9ca5dd7.zip
Merge pull request #25055 from ziglang/llvm21
LLVM 21
Diffstat (limited to 'src/zig_clang_driver.cpp')
-rw-r--r--src/zig_clang_driver.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/zig_clang_driver.cpp b/src/zig_clang_driver.cpp
index 306a898ec9..7f4c6034be 100644
--- a/src/zig_clang_driver.cpp
+++ b/src/zig_clang_driver.cpp
@@ -153,6 +153,11 @@ static bool SetBackdoorDriverOutputsFromEnvVars(Driver &TheDriver) {
}
const char *FilteringStr = ::getenv("CC_PRINT_HEADERS_FILTERING");
+ if (!FilteringStr) {
+ TheDriver.Diag(clang::diag::err_drv_print_header_env_var_invalid_format)
+ << EnvVar;
+ return false;
+ }
HeaderIncludeFilteringKind Filtering;
if (!stringToHeaderIncludeFiltering(FilteringStr, Filtering)) {
TheDriver.Diag(clang::diag::err_drv_print_header_env_var)
@@ -163,7 +168,7 @@ static bool SetBackdoorDriverOutputsFromEnvVars(Driver &TheDriver) {
if ((TheDriver.CCPrintHeadersFormat == HIFMT_Textual &&
Filtering != HIFIL_None) ||
(TheDriver.CCPrintHeadersFormat == HIFMT_JSON &&
- Filtering != HIFIL_Only_Direct_System)) {
+ Filtering == HIFIL_None)) {
TheDriver.Diag(clang::diag::err_drv_print_header_env_var_combination)
<< EnvVar << FilteringStr;
return false;
@@ -295,7 +300,7 @@ static int clang_main(int Argc, char **Argv, const llvm::ToolContext &ToolContex
if (const char *OverrideStr = ::getenv("CCC_OVERRIDE_OPTIONS")) {
// FIXME: Driver shouldn't take extra initial argument.
driver::applyOverrideOptions(Args, OverrideStr, SavedStrings,
- &llvm::errs());
+ "CCC_OVERRIDE_OPTIONS", &llvm::errs());
}
std::string Path = GetExecutablePath(ToolContext.Path, CanonicalPrefixes);
@@ -311,21 +316,24 @@ static int clang_main(int Argc, char **Argv, const llvm::ToolContext &ToolContex
.Case("-fintegrated-cc1", false)
.Default(UseNewCC1Process);
- IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts =
- CreateAndPopulateDiagOpts(Args);
+ std::unique_ptr<DiagnosticOptions> DiagOpts = CreateAndPopulateDiagOpts(Args);
+ // Driver's diagnostics don't use suppression mappings, so don't bother
+ // parsing them. CC1 still receives full args, so this doesn't impact other
+ // actions.
+ DiagOpts->DiagnosticSuppressionMappingsFile.clear();
- TextDiagnosticPrinter *DiagClient
- = new TextDiagnosticPrinter(llvm::errs(), &*DiagOpts);
+ TextDiagnosticPrinter *DiagClient =
+ new TextDiagnosticPrinter(llvm::errs(), *DiagOpts);
FixupDiagPrefixExeName(DiagClient, ProgName);
IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
- DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagClient);
+ DiagnosticsEngine Diags(DiagID, *DiagOpts, DiagClient);
if (!DiagOpts->DiagnosticSerializationFile.empty()) {
auto SerializedConsumer =
clang::serialized_diags::create(DiagOpts->DiagnosticSerializationFile,
- &*DiagOpts, /*MergeChildRecords=*/true);
+ *DiagOpts, /*MergeChildRecords=*/true);
Diags.setClient(new ChainedDiagnosticConsumer(
Diags.takeClient(), std::move(SerializedConsumer)));
}