[clang] [Clang] Try to fix data race on HasColors after #202441 (PR #206975)
Joseph Huber via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 1 06:12:43 PDT 2026
https://github.com/jhuber6 created https://github.com/llvm/llvm-project/pull/206975
Summary:
The clangd users call these functions in multi-thraeded contexts. The
raw_fd_stream has_colors query is cached, which was giving some data
races. Just use the process-level check for now.
>From 684080dce35b8de4f367779a6ab87ab95b2c962e Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Wed, 1 Jul 2026 08:03:30 -0500
Subject: [PATCH] [Clang] Try to fix data race on HasColors after #202441
Summary:
The clangd users call these functions in multi-thraeded contexts. The
raw_fd_stream has_colors query is cached, which was giving some data
races. Just use the process-level check for now.
---
clang/lib/Basic/Warnings.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Basic/Warnings.cpp b/clang/lib/Basic/Warnings.cpp
index 8adf339b3e5eb..91cce2e45d5f4 100644
--- a/clang/lib/Basic/Warnings.cpp
+++ b/clang/lib/Basic/Warnings.cpp
@@ -21,15 +21,18 @@
//
// Remark options are also handled here, analogously, except that they are much
// simpler because a remark can't be promoted to an error.
+
#include "clang/Basic/AllDiagnostics.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/DiagnosticDriver.h"
#include "clang/Basic/DiagnosticIDs.h"
#include "clang/Basic/DiagnosticOptions.h"
#include "llvm/ADT/StringRef.h"
+#include "llvm/Support/Process.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/Support/raw_ostream.h"
#include <cstring>
+
using namespace clang;
// EmitUnknownDiagWarning - Emit a warning and typo hint for unknown warning
@@ -54,7 +57,8 @@ void clang::ProcessWarningOptions(DiagnosticsEngine &Diags,
Diags.setElideType(Opts.ElideType);
Diags.setPrintTemplateTree(Opts.ShowTemplateTree);
- Diags.setShowColors(Opts.showColors(llvm::errs().has_colors()));
+ Diags.setShowColors(
+ Opts.showColors(llvm::sys::Process::StandardErrHasColors()));
// Handle -ferror-limit
if (Opts.ErrorLimit)
More information about the cfe-commits
mailing list