[llvm] 4c0e292 - [llvm] Fix most LLVM_ABI annotations in TableGen (#203246)

via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 11 06:31:13 PDT 2026


Author: Fabrice de Gans
Date: 2026-06-11T06:31:08-07:00
New Revision: 4c0e292f4cb729ecfb33a9ab356dd5b7fe1068e8

URL: https://github.com/llvm/llvm-project/commit/4c0e292f4cb729ecfb33a9ab356dd5b7fe1068e8
DIFF: https://github.com/llvm/llvm-project/commit/4c0e292f4cb729ecfb33a9ab356dd5b7fe1068e8.diff

LOG: [llvm] Fix most LLVM_ABI annotations in TableGen (#203246)

This updates most LLVM_ABI annotations in the TableGen headers to match
expected usage:
* All public APIs should be properly annotated.
* Inlined functions should not be annotated.

These changes were done by a script fixing annotations on LLVM public
headers and manually checked.

This effort is tracked in #109483.

Added: 
    

Modified: 
    llvm/include/llvm/TableGen/Error.h
    llvm/include/llvm/TableGen/Main.h
    llvm/include/llvm/TableGen/Parser.h
    llvm/include/llvm/TableGen/SetTheory.h
    llvm/include/llvm/TableGen/StringMatcher.h
    llvm/include/llvm/TableGen/StringToOffsetTable.h
    llvm/include/llvm/TableGen/TGTimer.h
    llvm/include/llvm/TableGen/TableGenBackend.h

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/TableGen/Error.h b/llvm/include/llvm/TableGen/Error.h
index b963dcba9869f..83f1dae39d011 100644
--- a/llvm/include/llvm/TableGen/Error.h
+++ b/llvm/include/llvm/TableGen/Error.h
@@ -22,38 +22,44 @@ class Record;
 class RecordVal;
 class Init;
 
-void PrintNote(const Twine &Msg);
-void PrintNote(function_ref<void(raw_ostream &OS)> PrintMsg);
-void PrintNote(ArrayRef<SMLoc> NoteLoc, const Twine &Msg);
-
-[[noreturn]] void PrintFatalNote(const Twine &Msg);
-[[noreturn]] void PrintFatalNote(ArrayRef<SMLoc> ErrorLoc, const Twine &Msg);
-[[noreturn]] void PrintFatalNote(const Record *Rec, const Twine &Msg);
-[[noreturn]] void PrintFatalNote(const RecordVal *RecVal, const Twine &Msg);
-
-void PrintWarning(const Twine &Msg);
-void PrintWarning(ArrayRef<SMLoc> WarningLoc, const Twine &Msg);
-void PrintWarning(const char *Loc, const Twine &Msg);
-
-void PrintError(const Twine &Msg);
-void PrintError(function_ref<void(raw_ostream &OS)> PrintMsg);
-void PrintError(ArrayRef<SMLoc> ErrorLoc, const Twine &Msg);
-void PrintError(const char *Loc, const Twine &Msg);
-void PrintError(const Record *Rec, const Twine &Msg);
-void PrintError(const RecordVal *RecVal, const Twine &Msg);
-
-[[noreturn]] void PrintFatalError(const Twine &Msg);
-[[noreturn]] void PrintFatalError(ArrayRef<SMLoc> ErrorLoc, const Twine &Msg);
-[[noreturn]] void PrintFatalError(const Record *Rec, const Twine &Msg);
-[[noreturn]] void PrintFatalError(const RecordVal *RecVal, const Twine &Msg);
-[[noreturn]] void PrintFatalError(function_ref<void(raw_ostream &OS)> PrintMsg);
+LLVM_ABI void PrintNote(const Twine &Msg);
+LLVM_ABI void PrintNote(function_ref<void(raw_ostream &OS)> PrintMsg);
+LLVM_ABI void PrintNote(ArrayRef<SMLoc> NoteLoc, const Twine &Msg);
+
+[[noreturn]] LLVM_ABI void PrintFatalNote(const Twine &Msg);
+[[noreturn]] LLVM_ABI void PrintFatalNote(ArrayRef<SMLoc> ErrorLoc,
+                                          const Twine &Msg);
+[[noreturn]] LLVM_ABI void PrintFatalNote(const Record *Rec, const Twine &Msg);
+[[noreturn]] LLVM_ABI void PrintFatalNote(const RecordVal *RecVal,
+                                          const Twine &Msg);
+
+LLVM_ABI void PrintWarning(const Twine &Msg);
+LLVM_ABI void PrintWarning(ArrayRef<SMLoc> WarningLoc, const Twine &Msg);
+LLVM_ABI void PrintWarning(const char *Loc, const Twine &Msg);
+
+LLVM_ABI void PrintError(const Twine &Msg);
+LLVM_ABI void PrintError(function_ref<void(raw_ostream &OS)> PrintMsg);
+LLVM_ABI void PrintError(ArrayRef<SMLoc> ErrorLoc, const Twine &Msg);
+LLVM_ABI void PrintError(const char *Loc, const Twine &Msg);
+LLVM_ABI void PrintError(const Record *Rec, const Twine &Msg);
+LLVM_ABI void PrintError(const RecordVal *RecVal, const Twine &Msg);
+
+[[noreturn]] LLVM_ABI void PrintFatalError(const Twine &Msg);
+[[noreturn]] LLVM_ABI void PrintFatalError(ArrayRef<SMLoc> ErrorLoc,
+                                           const Twine &Msg);
+[[noreturn]] LLVM_ABI void PrintFatalError(const Record *Rec, const Twine &Msg);
+[[noreturn]] LLVM_ABI void PrintFatalError(const RecordVal *RecVal,
+                                           const Twine &Msg);
+[[noreturn]] LLVM_ABI void
+PrintFatalError(function_ref<void(raw_ostream &OS)> PrintMsg);
 
 // Returns true if the assert failed.
-bool CheckAssert(SMLoc Loc, const Init *Condition, const Init *Message);
-void dumpMessage(SMLoc Loc, const Init *Message);
+LLVM_ABI bool CheckAssert(SMLoc Loc, const Init *Condition,
+                          const Init *Message);
+LLVM_ABI void dumpMessage(SMLoc Loc, const Init *Message);
 
-extern SourceMgr SrcMgr;
-extern unsigned ErrorsPrinted;
+extern LLVM_ABI SourceMgr SrcMgr;
+extern LLVM_ABI unsigned ErrorsPrinted;
 
 } // end namespace llvm
 

diff  --git a/llvm/include/llvm/TableGen/Main.h b/llvm/include/llvm/TableGen/Main.h
index daede9f5a46f0..f091985b4bdd4 100644
--- a/llvm/include/llvm/TableGen/Main.h
+++ b/llvm/include/llvm/TableGen/Main.h
@@ -37,13 +37,14 @@ using TableGenMainFn =
 using MultiFileTableGenMainFn = function_ref<bool(TableGenOutputFiles &OutFiles,
                                                   const RecordKeeper &Records)>;
 
-int TableGenMain(const char *argv0, TableGenMainFn MainFn = nullptr);
+LLVM_ABI int TableGenMain(const char *argv0, TableGenMainFn MainFn = nullptr);
 
-int TableGenMain(const char *argv0, MultiFileTableGenMainFn MainFn = nullptr);
+LLVM_ABI int TableGenMain(const char *argv0,
+                          MultiFileTableGenMainFn MainFn = nullptr);
 
 /// Controls emitting large character arrays as strings or character arrays.
 /// Typically set to false when building with MSVC.
-extern cl::opt<bool> EmitLongStrLiterals;
+extern LLVM_ABI cl::opt<bool> EmitLongStrLiterals;
 
 } // end namespace llvm
 

diff  --git a/llvm/include/llvm/TableGen/Parser.h b/llvm/include/llvm/TableGen/Parser.h
index d4130412d9560..5bbfdc486e92a 100644
--- a/llvm/include/llvm/TableGen/Parser.h
+++ b/llvm/include/llvm/TableGen/Parser.h
@@ -13,6 +13,8 @@
 #ifndef LLVM_TABLEGEN_PARSER_H
 #define LLVM_TABLEGEN_PARSER_H
 
+#include "llvm/Support/Compiler.h"
+
 namespace llvm {
 class RecordKeeper;
 class SourceMgr;
@@ -23,7 +25,7 @@ class SourceMgr;
 ///
 /// NOTE: TableGen currently relies on global state within a given parser
 ///       invocation, so this function is not thread-safe.
-bool TableGenParseFile(SourceMgr &InputSrcMgr, RecordKeeper &Records);
+LLVM_ABI bool TableGenParseFile(SourceMgr &InputSrcMgr, RecordKeeper &Records);
 
 } // end namespace llvm
 

diff  --git a/llvm/include/llvm/TableGen/SetTheory.h b/llvm/include/llvm/TableGen/SetTheory.h
index 53c78e4572927..23eb466407d73 100644
--- a/llvm/include/llvm/TableGen/SetTheory.h
+++ b/llvm/include/llvm/TableGen/SetTheory.h
@@ -68,7 +68,7 @@ class SetTheory {
   using RecSet = SmallSetVector<const Record *, 16>;
 
   /// Operator - A callback representing a DAG operator.
-  class Operator {
+  class LLVM_ABI Operator {
     virtual void anchor();
 
   public:
@@ -83,7 +83,7 @@ class SetTheory {
   /// Expander - A callback function that can transform a Record representing a
   /// set into a fully expanded list of elements. Expanders provide a way for
   /// users to define named sets that can be used in DAG expressions.
-  class Expander {
+  class LLVM_ABI Expander {
     virtual void anchor();
 
   public:
@@ -106,10 +106,10 @@ class SetTheory {
 
 public:
   /// Create a SetTheory instance with only the standard operators.
-  SetTheory();
+  LLVM_ABI SetTheory();
 
   /// addExpander - Add an expander for Records with the named super class.
-  void addExpander(StringRef ClassName, std::unique_ptr<Expander>);
+  LLVM_ABI void addExpander(StringRef ClassName, std::unique_ptr<Expander>);
 
   /// addFieldExpander - Add an expander for ClassName that simply evaluates
   /// FieldName in the Record to get the set elements. That is all that is
@@ -119,13 +119,13 @@ class SetTheory {
   ///     dag Elts = d;
   ///   }
   ///
-  void addFieldExpander(StringRef ClassName, StringRef FieldName);
+  LLVM_ABI void addFieldExpander(StringRef ClassName, StringRef FieldName);
 
   /// addOperator - Add a DAG operator.
-  void addOperator(StringRef Name, std::unique_ptr<Operator>);
+  LLVM_ABI void addOperator(StringRef Name, std::unique_ptr<Operator>);
 
   /// evaluate - Evaluate Expr and append the resulting set to Elts.
-  void evaluate(const Init *Expr, RecSet &Elts, ArrayRef<SMLoc> Loc);
+  LLVM_ABI void evaluate(const Init *Expr, RecSet &Elts, ArrayRef<SMLoc> Loc);
 
   /// evaluate - Evaluate a sequence of Inits and append to Elts.
   template<typename Iter>
@@ -137,7 +137,7 @@ class SetTheory {
   /// expand - Expand a record into a set of elements if possible. Return a
   /// pointer to the expanded elements, or NULL if Set cannot be expanded
   /// further.
-  const RecVec *expand(const Record *Set);
+  LLVM_ABI const RecVec *expand(const Record *Set);
 };
 
 } // end namespace llvm

diff  --git a/llvm/include/llvm/TableGen/StringMatcher.h b/llvm/include/llvm/TableGen/StringMatcher.h
index 70554de1a6f17..f31508fbe0631 100644
--- a/llvm/include/llvm/TableGen/StringMatcher.h
+++ b/llvm/include/llvm/TableGen/StringMatcher.h
@@ -41,7 +41,7 @@ class StringMatcher {
                 raw_ostream &OS)
       : StrVariableName(StrVariableName), Matches(Matches), OS(OS) {}
 
-  void Emit(unsigned Indent = 0, bool IgnoreDuplicates = false) const;
+  LLVM_ABI void Emit(unsigned Indent = 0, bool IgnoreDuplicates = false) const;
 
 private:
   bool EmitStringMatcherForChar(ArrayRef<const StringPair *> Matches,

diff  --git a/llvm/include/llvm/TableGen/StringToOffsetTable.h b/llvm/include/llvm/TableGen/StringToOffsetTable.h
index 5ee5fb538f3eb..075e16bdace4d 100644
--- a/llvm/include/llvm/TableGen/StringToOffsetTable.h
+++ b/llvm/include/llvm/TableGen/StringToOffsetTable.h
@@ -43,7 +43,7 @@ class StringToOffsetTable {
   bool empty() const { return StringOffset.empty(); }
   size_t size() const { return AggregateString.size(); }
 
-  unsigned GetOrAddStringOffset(StringRef Str);
+  LLVM_ABI unsigned GetOrAddStringOffset(StringRef Str);
 
   // Returns the offset of `Str` in the table if its preset, else return
   // std::nullopt.
@@ -65,10 +65,10 @@ class StringToOffsetTable {
   // The string table, and its input string contents, are always emitted as both
   // `static` and `constexpr`. Both `Name` and (`Name` + "Storage") must be
   // valid identifiers to declare.
-  void EmitStringTableDef(raw_ostream &OS, const Twine &Name) const;
+  LLVM_ABI void EmitStringTableDef(raw_ostream &OS, const Twine &Name) const;
 
   // Emit the string as one single string.
-  void EmitString(raw_ostream &O) const;
+  LLVM_ABI void EmitString(raw_ostream &O) const;
 };
 
 } // end namespace llvm

diff  --git a/llvm/include/llvm/TableGen/TGTimer.h b/llvm/include/llvm/TableGen/TGTimer.h
index 31753f54028cb..28a59c78874f3 100644
--- a/llvm/include/llvm/TableGen/TGTimer.h
+++ b/llvm/include/llvm/TableGen/TGTimer.h
@@ -38,17 +38,17 @@ class TGTimer {
   }
 
   /// Start timing a phase. Automatically stops any previous phase timer.
-  void startTimer(StringRef Name);
+  LLVM_ABI void startTimer(StringRef Name);
 
   /// Stop timing a phase.
-  void stopTimer();
+  LLVM_ABI void stopTimer();
 
   /// Start timing the overall backend. If the backend itself starts a timer,
   /// then this timer is cleared.
-  void startBackendTimer(StringRef Name);
+  LLVM_ABI void startBackendTimer(StringRef Name);
 
   /// Stop timing the overall backend.
-  void stopBackendTimer();
+  LLVM_ABI void stopBackendTimer();
 
   /// Stop phase timing and print the report.
   void stopPhaseTiming() { TimingGroup.reset(); }

diff  --git a/llvm/include/llvm/TableGen/TableGenBackend.h b/llvm/include/llvm/TableGen/TableGenBackend.h
index 2080b8245e11a..e86a7626161bd 100644
--- a/llvm/include/llvm/TableGen/TableGenBackend.h
+++ b/llvm/include/llvm/TableGen/TableGenBackend.h
@@ -51,7 +51,7 @@ struct FnT {
 /// \p ByDefault is true, then that callback is applied by default if no
 /// command line option was specified.
 struct Opt {
-  Opt(StringRef Name, FnT CB, StringRef Desc, bool ByDefault = false);
+  LLVM_ABI Opt(StringRef Name, FnT CB, StringRef Desc, bool ByDefault = false);
 };
 
 /// Convienence wrapper around `Opt` that registers `EmitterClass::run` as the
@@ -82,15 +82,16 @@ template <class EmitterC> class MultiFileOptClass : Opt {
 
 /// Apply callback for any command line option registered above. Returns false
 /// is no callback was applied.
-bool ApplyCallback(const RecordKeeper &Records, TableGenOutputFiles &OutFiles,
-                   StringRef FilenamePrefix);
+LLVM_ABI bool ApplyCallback(const RecordKeeper &Records,
+                            TableGenOutputFiles &OutFiles,
+                            StringRef FilenamePrefix);
 
 } // namespace TableGen::Emitter
 
 /// emitSourceFileHeader - Output an LLVM style file header to the specified
 /// raw_ostream.
-void emitSourceFileHeader(StringRef Desc, raw_ostream &OS,
-                          const RecordKeeper &Record = RecordKeeper());
+LLVM_ABI void emitSourceFileHeader(StringRef Desc, raw_ostream &OS,
+                                   const RecordKeeper &Record = RecordKeeper());
 
 } // namespace llvm
 


        


More information about the llvm-commits mailing list