[llvm] [llvm] annotate remaining Telemetry and ToolDrivers interfaces for DLL export (PR #145369)

Andrew Rogers via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 23 12:03:56 PDT 2025


https://github.com/andrurogerz updated https://github.com/llvm/llvm-project/pull/145369

>From de5792bd5497efaacd95aedf44f264b9c609436a Mon Sep 17 00:00:00 2001
From: Andrew Rogers <andrurogerz at gmail.com>
Date: Mon, 23 Jun 2025 10:20:27 -0700
Subject: [PATCH 1/3] [llvm] auto-annotate remaining LLVM interfaces for DLL

---
 llvm/include/llvm/Telemetry/Telemetry.h                    | 5 +++--
 llvm/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h | 2 +-
 llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h         | 2 +-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/llvm/include/llvm/Telemetry/Telemetry.h b/llvm/include/llvm/Telemetry/Telemetry.h
index bc0056ec7e848..a5cea60f1b222 100644
--- a/llvm/include/llvm/Telemetry/Telemetry.h
+++ b/llvm/include/llvm/Telemetry/Telemetry.h
@@ -14,6 +14,7 @@
 #ifndef LLVM_TELEMETRY_TELEMETRY_H
 #define LLVM_TELEMETRY_TELEMETRY_H
 
+#include "llvm/Support/Compiler.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/StringExtras.h"
 #include "llvm/ADT/StringRef.h"
@@ -101,7 +102,7 @@ struct EntryKind {
 /// For example, The LLDB debugger can define a DebugCommandInfo subclass
 /// which has additional fields about the debug-command being instrumented,
 /// such as `CommandArguments` or `CommandName`.
-struct TelemetryInfo {
+struct LLVM_ABI TelemetryInfo {
   // This represents a unique-id, conventionally corresponding to
   // a tool's session - i.e., every time the tool starts until it exits.
   //
@@ -141,7 +142,7 @@ class Destination {
 /// and this framework.
 /// It is responsible for collecting telemetry data from the tool being
 /// monitored and transmitting the data elsewhere.
-class Manager {
+class LLVM_ABI Manager {
 public:
   virtual ~Manager() = default;
 
diff --git a/llvm/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h b/llvm/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h
index d144f62f1cc1a..c02ada7b8ac0b 100644
--- a/llvm/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h
+++ b/llvm/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h
@@ -17,7 +17,7 @@
 namespace llvm {
 template <typename T> class ArrayRef;
 
-int dlltoolDriverMain(ArrayRef<const char *> ArgsArr);
+LLVM_ABI int dlltoolDriverMain(ArrayRef<const char *> ArgsArr);
 } // namespace llvm
 
 #endif
diff --git a/llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h b/llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
index 23a2fc348a892..15e6d50cd59c2 100644
--- a/llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
+++ b/llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
@@ -17,7 +17,7 @@
 namespace llvm {
 template <typename T> class ArrayRef;
 
-int libDriverMain(ArrayRef<const char *> ARgs);
+LLVM_ABI int libDriverMain(ArrayRef<const char *> ARgs);
 
 }
 

>From 58bdd4c67a60d5fa695feac000a7b6982fdc43da Mon Sep 17 00:00:00 2001
From: Andrew Rogers <andrurogerz at gmail.com>
Date: Mon, 23 Jun 2025 10:22:41 -0700
Subject: [PATCH 2/3] [llvm] manual fix-ups to LLVM annotations

---
 llvm/include/llvm/Telemetry/Telemetry.h                    | 5 +++++
 llvm/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h | 2 ++
 llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h         | 2 ++
 3 files changed, 9 insertions(+)

diff --git a/llvm/include/llvm/Telemetry/Telemetry.h b/llvm/include/llvm/Telemetry/Telemetry.h
index a5cea60f1b222..94bae6810e245 100644
--- a/llvm/include/llvm/Telemetry/Telemetry.h
+++ b/llvm/include/llvm/Telemetry/Telemetry.h
@@ -144,8 +144,13 @@ class Destination {
 /// monitored and transmitting the data elsewhere.
 class LLVM_ABI Manager {
 public:
+  Manager() = default;
   virtual ~Manager() = default;
 
+  // Explicitly non-copyable.
+  Manager(Manager const&) = delete;
+  Manager& operator=(Manager const&) = delete;
+
   // Dispatch Telemetry data to the Destination(s).
   // The argument is non-const because the Manager may add or remove
   // data from the entry.
diff --git a/llvm/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h b/llvm/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h
index c02ada7b8ac0b..30a260c52f1d9 100644
--- a/llvm/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h
+++ b/llvm/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h
@@ -14,6 +14,8 @@
 #ifndef LLVM_TOOLDRIVERS_LLVM_DLLTOOL_DLLTOOLDRIVER_H
 #define LLVM_TOOLDRIVERS_LLVM_DLLTOOL_DLLTOOLDRIVER_H
 
+#include "llvm/Support/Compiler.h"
+
 namespace llvm {
 template <typename T> class ArrayRef;
 
diff --git a/llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h b/llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
index 15e6d50cd59c2..749f845bfb878 100644
--- a/llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
+++ b/llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
@@ -14,6 +14,8 @@
 #ifndef LLVM_TOOLDRIVERS_LLVM_LIB_LIBDRIVER_H
 #define LLVM_TOOLDRIVERS_LLVM_LIB_LIBDRIVER_H
 
+#include "llvm/Support/Compiler.h"
+
 namespace llvm {
 template <typename T> class ArrayRef;
 

>From 9e15bf1be47c7f6f1ffd3c53025be559d89ce726 Mon Sep 17 00:00:00 2001
From: Andrew Rogers <andrurogerz at gmail.com>
Date: Mon, 23 Jun 2025 10:24:06 -0700
Subject: [PATCH 3/3] [llvm] clang-format changes

---
 llvm/include/llvm/Telemetry/Telemetry.h            | 6 +++---
 llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h | 1 -
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/llvm/include/llvm/Telemetry/Telemetry.h b/llvm/include/llvm/Telemetry/Telemetry.h
index 94bae6810e245..708ec439ed40f 100644
--- a/llvm/include/llvm/Telemetry/Telemetry.h
+++ b/llvm/include/llvm/Telemetry/Telemetry.h
@@ -14,10 +14,10 @@
 #ifndef LLVM_TELEMETRY_TELEMETRY_H
 #define LLVM_TELEMETRY_TELEMETRY_H
 
-#include "llvm/Support/Compiler.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/StringExtras.h"
 #include "llvm/ADT/StringRef.h"
+#include "llvm/Support/Compiler.h"
 #include "llvm/Support/Error.h"
 #include <map>
 #include <memory>
@@ -148,8 +148,8 @@ class LLVM_ABI Manager {
   virtual ~Manager() = default;
 
   // Explicitly non-copyable.
-  Manager(Manager const&) = delete;
-  Manager& operator=(Manager const&) = delete;
+  Manager(Manager const &) = delete;
+  Manager &operator=(Manager const &) = delete;
 
   // Dispatch Telemetry data to the Destination(s).
   // The argument is non-const because the Manager may add or remove
diff --git a/llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h b/llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
index 749f845bfb878..43fc5d72d3a89 100644
--- a/llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
+++ b/llvm/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
@@ -20,7 +20,6 @@ namespace llvm {
 template <typename T> class ArrayRef;
 
 LLVM_ABI int libDriverMain(ArrayRef<const char *> ARgs);
-
 }
 
 #endif



More information about the llvm-commits mailing list