https://github.com/Michael137 updated 
https://github.com/llvm/llvm-project/pull/176491

>From 455c883c5e8cbe1a9bfeabfbb5a82b283eb6e4d3 Mon Sep 17 00:00:00 2001
From: Michael Buch <[email protected]>
Date: Fri, 16 Jan 2026 22:46:28 +0000
Subject: [PATCH 1/2] [llvm][Support] Move llvm::createStringErrorV to a new
 ErrorExtras.h header

Introducing `llvm::createStringErrorV` caused a `0.5%` compile-time
regression because it's an inline function in a core header. This moves
the API to a new header to prevent including this function in files that
don't need it.

Also includes the header in the source files that have been using
`createStringErrorV` (which currently is just LLDB).
---
 lldb/source/Expression/DWARFExpression.cpp    |  1 +
 lldb/source/Expression/Expression.cpp         |  1 +
 .../Clang/ClangModulesDeclVendor.cpp          |  1 +
 .../Platform/WebAssembly/PlatformWasm.cpp     |  1 +
 .../Process/gdb-remote/ProcessGDBRemote.cpp   |  1 +
 .../SymbolFile/DWARF/SymbolFileDWARF.cpp      |  1 +
 .../DWARF/SymbolFileDWARFDebugMap.cpp         |  1 +
 lldb/source/Protocol/MCP/Server.cpp           |  1 +
 lldb/source/Symbol/Function.cpp               |  1 +
 llvm/include/llvm/Support/Error.h             | 16 ---------
 llvm/include/llvm/Support/ErrorExtras.h       | 34 +++++++++++++++++++
 11 files changed, 43 insertions(+), 16 deletions(-)
 create mode 100644 llvm/include/llvm/Support/ErrorExtras.h

diff --git a/lldb/source/Expression/DWARFExpression.cpp 
b/lldb/source/Expression/DWARFExpression.cpp
index 47909db410cac..c23471a2c1219 100644
--- a/lldb/source/Expression/DWARFExpression.cpp
+++ b/lldb/source/Expression/DWARFExpression.cpp
@@ -38,6 +38,7 @@
 #include "lldb/Target/Thread.h"
 #include "llvm/DebugInfo/DWARF/DWARFExpressionPrinter.h"
 #include "llvm/DebugInfo/DWARF/LowLevel/DWARFExpression.h"
+#include "llvm/Support/ErrorExtras.h"
 
 using namespace lldb;
 using namespace lldb_private;
diff --git a/lldb/source/Expression/Expression.cpp 
b/lldb/source/Expression/Expression.cpp
index 4f3e26ebbf57b..cca645e5f264f 100644
--- a/lldb/source/Expression/Expression.cpp
+++ b/lldb/source/Expression/Expression.cpp
@@ -14,6 +14,7 @@
 #include "llvm/ADT/StringExtras.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/Error.h"
+#include "llvm/Support/ErrorExtras.h"
 
 using namespace lldb_private;
 
diff --git 
a/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp 
b/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
index 5d5535d2dd221..1276abe09c63c 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
@@ -20,6 +20,7 @@
 #include "clang/Sema/Lookup.h"
 #include "clang/Serialization/ASTReader.h"
 #include "llvm/ADT/StringRef.h"
+#include "llvm/Support/ErrorExtras.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Threading.h"
 
diff --git a/lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.cpp 
b/lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.cpp
index 7d9e6af498653..30f31cb9ae75f 100644
--- a/lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.cpp
+++ b/lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.cpp
@@ -20,6 +20,7 @@
 #include "lldb/Utility/Listener.h"
 #include "lldb/Utility/Log.h"
 #include "llvm/ADT/StringExtras.h"
+#include "llvm/Support/ErrorExtras.h"
 
 using namespace lldb;
 using namespace lldb_private;
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp 
b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index f91b59b48eb5c..cbe013755f198 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -90,6 +90,7 @@
 #include "llvm/ADT/ScopeExit.h"
 #include "llvm/ADT/StringMap.h"
 #include "llvm/ADT/StringSwitch.h"
+#include "llvm/Support/ErrorExtras.h"
 #include "llvm/Support/FormatAdapters.h"
 #include "llvm/Support/Threading.h"
 #include "llvm/Support/raw_ostream.h"
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp 
b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
index 1b2985820fefc..c6261910700cb 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -15,6 +15,7 @@
 #include "llvm/DebugInfo/DWARF/DWARFDebugLoc.h"
 #include "llvm/Support/Casting.h"
 #include "llvm/Support/Error.h"
+#include "llvm/Support/ErrorExtras.h"
 #include "llvm/Support/FileUtilities.h"
 #include "llvm/Support/FormatAdapters.h"
 #include "llvm/Support/Threading.h"
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp 
b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
index c6aab08117d88..d7fe6a4b2879a 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
@@ -33,6 +33,7 @@
 #include "lldb/Symbol/VariableList.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringRef.h"
+#include "llvm/Support/ErrorExtras.h"
 #include "llvm/Support/ScopedPrinter.h"
 
 #include "lldb/Target/StackFrame.h"
diff --git a/lldb/source/Protocol/MCP/Server.cpp 
b/lldb/source/Protocol/MCP/Server.cpp
index 18d4b6f42c5bb..a8871ff5c39f0 100644
--- a/lldb/source/Protocol/MCP/Server.cpp
+++ b/lldb/source/Protocol/MCP/Server.cpp
@@ -14,6 +14,7 @@
 #include "lldb/Protocol/MCP/Protocol.h"
 #include "lldb/Protocol/MCP/Transport.h"
 #include "llvm/ADT/SmallString.h"
+#include "llvm/Support/ErrorExtras.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/JSON.h"
 #include "llvm/Support/Signals.h"
diff --git a/lldb/source/Symbol/Function.cpp b/lldb/source/Symbol/Function.cpp
index 061cc03a69ed2..fdb20bcd83ffd 100644
--- a/lldb/source/Symbol/Function.cpp
+++ b/lldb/source/Symbol/Function.cpp
@@ -22,6 +22,7 @@
 #include "lldb/Utility/LLDBLog.h"
 #include "lldb/Utility/Log.h"
 #include "llvm/Support/Casting.h"
+#include "llvm/Support/ErrorExtras.h"
 
 using namespace lldb;
 using namespace lldb_private;
diff --git a/llvm/include/llvm/Support/Error.h 
b/llvm/include/llvm/Support/Error.h
index 6638c919e2965..c9fd16fdb7c2b 100644
--- a/llvm/include/llvm/Support/Error.h
+++ b/llvm/include/llvm/Support/Error.h
@@ -21,7 +21,6 @@
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/ErrorOr.h"
 #include "llvm/Support/Format.h"
-#include "llvm/Support/FormatVariadic.h"
 #include "llvm/Support/raw_ostream.h"
 #include <cassert>
 #include <cstdint>
@@ -1336,21 +1335,6 @@ inline Error createStringError(std::errc EC, char const 
*Fmt,
   return createStringError(std::make_error_code(EC), Fmt, Vals...);
 }
 
-// LLVM formatv versions of llvm::createStringError
-
-template <typename... Ts>
-inline Error createStringErrorV(std::error_code EC, char const *Fmt,
-                                Ts &&...Vals) {
-  return make_error<StringError>(formatv(Fmt, std::forward<Ts>(Vals)...).str(),
-                                 EC, true);
-}
-
-template <typename... Ts>
-inline Error createStringErrorV(char const *Fmt, Ts &&...Vals) {
-  return createStringErrorV(llvm::inconvertibleErrorCode(), Fmt,
-                            std::forward<Ts>(Vals)...);
-}
-
 /// This class wraps a filename and another Error.
 ///
 /// In some cases, an error needs to live along a 'source' name, in order to
diff --git a/llvm/include/llvm/Support/ErrorExtras.h 
b/llvm/include/llvm/Support/ErrorExtras.h
new file mode 100644
index 0000000000000..ecf2e807fca8b
--- /dev/null
+++ b/llvm/include/llvm/Support/ErrorExtras.h
@@ -0,0 +1,34 @@
+//===- llvm/Support/Error.h - Recoverable error handling --------*- C++ 
-*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_SUPPORT_ERROREXTRAS_H
+#define LLVM_SUPPORT_ERROREXTRAS_H
+
+#include "llvm/Support/Error.h"
+#include "llvm/Support/FormatVariadic.h"
+
+namespace llvm {
+
+// LLVM formatv versions of llvm::createStringError
+
+template <typename... Ts>
+inline Error createStringErrorV(std::error_code EC, char const *Fmt,
+                                Ts &&...Vals) {
+  return make_error<StringError>(formatv(Fmt, std::forward<Ts>(Vals)...).str(),
+                                 EC, true);
+}
+
+template <typename... Ts>
+inline Error createStringErrorV(char const *Fmt, Ts &&...Vals) {
+  return createStringErrorV(llvm::inconvertibleErrorCode(), Fmt,
+                            std::forward<Ts>(Vals)...);
+}
+
+} // namespace llvm
+
+#endif // LLVM_SUPPORT_ERROREXTRAS_H

>From 2fa1ced0c31d91b74ae8b986163ae2482824078b Mon Sep 17 00:00:00 2001
From: Michael Buch <[email protected]>
Date: Fri, 16 Jan 2026 22:54:55 +0000
Subject: [PATCH 2/2] fixup! fixup comment

---
 llvm/include/llvm/Support/ErrorExtras.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/include/llvm/Support/ErrorExtras.h 
b/llvm/include/llvm/Support/ErrorExtras.h
index ecf2e807fca8b..bcfad0eab6097 100644
--- a/llvm/include/llvm/Support/ErrorExtras.h
+++ b/llvm/include/llvm/Support/ErrorExtras.h
@@ -1,4 +1,4 @@
-//===- llvm/Support/Error.h - Recoverable error handling --------*- C++ 
-*-===//
+//===- llvm/Support/ErrorExtras.h -------------------------------*- C++ 
-*-===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.

_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to