[llvm] 139f726 - [NFC][TableGen] Add IfGuardEmitter and adopt it in InstrInfoEmitter (#168616)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 19 07:33:42 PST 2025
Author: Rahul Joshi
Date: 2025-11-19T07:33:37-08:00
New Revision: 139f726c84bc2c5144d10a79dd8f31e17ce7e03b
URL: https://github.com/llvm/llvm-project/commit/139f726c84bc2c5144d10a79dd8f31e17ce7e03b
DIFF: https://github.com/llvm/llvm-project/commit/139f726c84bc2c5144d10a79dd8f31e17ce7e03b.diff
LOG: [NFC][TableGen] Add IfGuardEmitter and adopt it in InstrInfoEmitter (#168616)
Add a RAII `IfGuardEmitter` to insert simple #if guards and adopt it in
InstrInfoEmitter.
Added:
Modified:
llvm/include/llvm/TableGen/CodeGenHelpers.h
llvm/utils/TableGen/InstrInfoEmitter.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/TableGen/CodeGenHelpers.h b/llvm/include/llvm/TableGen/CodeGenHelpers.h
index 1b1b5e63a8fc4..41b0adc49d1ad 100644
--- a/llvm/include/llvm/TableGen/CodeGenHelpers.h
+++ b/llvm/include/llvm/TableGen/CodeGenHelpers.h
@@ -46,6 +46,23 @@ class IfDefEmitter {
bool LateUndef;
};
+// Simple RAII helper for emitting #if guard. It emits:
+// #if <Condition>
+// #endif // <Condition>
+class IfGuardEmitter {
+public:
+ IfGuardEmitter(raw_ostream &OS, StringRef Condition)
+ : Condition(Condition.str()), OS(OS) {
+ OS << "#if " << Condition << "\n\n";
+ }
+
+ ~IfGuardEmitter() { OS << "\n#endif // " << Condition << "\n\n"; }
+
+private:
+ std::string Condition;
+ raw_ostream &OS;
+};
+
// Simple RAII helper for emitting header include guard (ifndef-define-endif).
class IncludeGuardEmitter {
public:
diff --git a/llvm/utils/TableGen/InstrInfoEmitter.cpp b/llvm/utils/TableGen/InstrInfoEmitter.cpp
index d46c9d811753a..843b63070959c 100644
--- a/llvm/utils/TableGen/InstrInfoEmitter.cpp
+++ b/llvm/utils/TableGen/InstrInfoEmitter.cpp
@@ -943,24 +943,23 @@ void InstrInfoEmitter::run(raw_ostream &OS) {
}
}
- OS << "#if defined(GET_INSTRINFO_MC_DESC) || "
- "defined(GET_INSTRINFO_CTOR_DTOR)\n";
-
- OS << "namespace llvm {\n\n";
-
- OS << "struct " << TargetName << "InstrTable {\n";
- OS << " MCInstrDesc Insts[" << NumberedInstructions.size() << "];\n";
- OS << " static_assert(alignof(MCInstrDesc) >= alignof(MCOperandInfo), "
- "\"Unwanted padding between Insts and OperandInfo\");\n";
- OS << " MCOperandInfo OperandInfo[" << OperandInfoSize << "];\n";
- OS << " static_assert(alignof(MCOperandInfo) >= alignof(MCPhysReg), "
- "\"Unwanted padding between OperandInfo and ImplicitOps\");\n";
- OS << " MCPhysReg ImplicitOps[" << std::max(ImplicitListSize, 1U) << "];\n";
- OS << "};\n\n";
-
- OS << "} // end namespace llvm\n";
- OS << "#endif // defined(GET_INSTRINFO_MC_DESC) || "
- "defined(GET_INSTRINFO_CTOR_DTOR)\n\n";
+ {
+ IfGuardEmitter IfGuard(
+ OS,
+ "defined(GET_INSTRINFO_MC_DESC) || defined(GET_INSTRINFO_CTOR_DTOR)");
+ NamespaceEmitter NS(OS, "llvm");
+
+ OS << "struct " << TargetName << "InstrTable {\n";
+ OS << " MCInstrDesc Insts[" << NumberedInstructions.size() << "];\n";
+ OS << " static_assert(alignof(MCInstrDesc) >= alignof(MCOperandInfo), "
+ "\"Unwanted padding between Insts and OperandInfo\");\n";
+ OS << " MCOperandInfo OperandInfo[" << OperandInfoSize << "];\n";
+ OS << " static_assert(alignof(MCOperandInfo) >= alignof(MCPhysReg), "
+ "\"Unwanted padding between OperandInfo and ImplicitOps\");\n";
+ OS << " MCPhysReg ImplicitOps[" << std::max(ImplicitListSize, 1U)
+ << "];\n";
+ OS << "};";
+ }
const CodeGenRegBank &RegBank = Target.getRegBank();
const CodeGenHwModes &CGH = Target.getHwModes();
More information about the llvm-commits
mailing list