From 3a9bc01ec4f21076b9ca99cbd292140f54bec18e Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Mon, 26 Jun 2023 15:44:46 -0700 Subject: [PATCH] Flatten two terminator kind macros into one. (#2948) As requested in #2942. --- toolchain/semantics/semantics_node_kind.cpp | 6 ++--- toolchain/semantics/semantics_node_kind.def | 28 +++++++-------------- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/toolchain/semantics/semantics_node_kind.cpp b/toolchain/semantics/semantics_node_kind.cpp index 56a5cbc45db4..06b4dc115446 100644 --- a/toolchain/semantics/semantics_node_kind.cpp +++ b/toolchain/semantics/semantics_node_kind.cpp @@ -14,10 +14,8 @@ CARBON_DEFINE_ENUM_CLASS_NAMES(SemanticsNodeKind) = { auto SemanticsNodeKind::terminator_kind() const -> SemanticsTerminatorKind { static constexpr SemanticsTerminatorKind Table[] = { #define CARBON_SEMANTICS_NODE_KIND(Name) SemanticsTerminatorKind::NotTerminator, -#define CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND(Name) \ - SemanticsTerminatorKind::TerminatorSequence, -#define CARBON_SEMANTICS_TERMINATOR_KIND(Name) \ - SemanticsTerminatorKind::Terminator, +#define CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(Name, TerminatorKind) \ + SemanticsTerminatorKind::TerminatorKind, #include "toolchain/semantics/semantics_node_kind.def" }; return Table[AsInt()]; diff --git a/toolchain/semantics/semantics_node_kind.def b/toolchain/semantics/semantics_node_kind.def index f3f0e88af4af..4e6dd615afeb 100644 --- a/toolchain/semantics/semantics_node_kind.def +++ b/toolchain/semantics/semantics_node_kind.def @@ -10,27 +10,18 @@ // Supported x-macros are: // - CARBON_SEMANTICS_NODE_KIND(Name) // Defines a node kind. -// - CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND(Name) -// Defines a node kind for a node in the terminator sequence, such as -// BranchIf. These nodes can only appear at the end of a block, after all -// nodes that are not in the terminator sequence, before the terminator. -// - CARBON_SEMANTICS_TERMINATOR_KIND(Name) +// - CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(Name, TerminatorKind) // Defines a node kind for a terminator node. #ifndef CARBON_SEMANTICS_NODE_KIND #error "Must define the x-macro to use this file." #endif -#ifndef CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND -#define CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND(Name) \ +#ifndef CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND +#define CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(Name, TerminatorKind) \ CARBON_SEMANTICS_NODE_KIND(Name) #endif -#ifndef CARBON_SEMANTICS_TERMINATOR_KIND -#define CARBON_SEMANTICS_TERMINATOR_KIND(Name) \ - CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND(Name) -#endif - CARBON_SEMANTICS_NODE_KIND(Invalid) // A cross-reference between IRs. @@ -41,16 +32,16 @@ CARBON_SEMANTICS_NODE_KIND(BinaryOperatorAdd) CARBON_SEMANTICS_NODE_KIND(BindName) CARBON_SEMANTICS_NODE_KIND(BlockArg) CARBON_SEMANTICS_NODE_KIND(BoolLiteral) -CARBON_SEMANTICS_TERMINATOR_KIND(Branch) -CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND(BranchIf) -CARBON_SEMANTICS_TERMINATOR_KIND(BranchWithArg) +CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(Branch, Terminator) +CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(BranchIf, TerminatorSequence) +CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(BranchWithArg, Terminator) CARBON_SEMANTICS_NODE_KIND(Builtin) CARBON_SEMANTICS_NODE_KIND(Call) CARBON_SEMANTICS_NODE_KIND(FunctionDeclaration) CARBON_SEMANTICS_NODE_KIND(IntegerLiteral) CARBON_SEMANTICS_NODE_KIND(RealLiteral) -CARBON_SEMANTICS_TERMINATOR_KIND(Return) -CARBON_SEMANTICS_TERMINATOR_KIND(ReturnExpression) +CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(Return, Terminator) +CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND(ReturnExpression, Terminator) CARBON_SEMANTICS_NODE_KIND(StringLiteral) CARBON_SEMANTICS_NODE_KIND(StructMemberAccess) CARBON_SEMANTICS_NODE_KIND(StructType) @@ -60,6 +51,5 @@ CARBON_SEMANTICS_NODE_KIND(StubReference) CARBON_SEMANTICS_NODE_KIND(UnaryOperatorNot) CARBON_SEMANTICS_NODE_KIND(VarStorage) -#undef CARBON_SEMANTICS_TERMINATOR_SEQUENCE_KIND -#undef CARBON_SEMANTICS_TERMINATOR_KIND +#undef CARBON_SEMANTICS_NODE_KIND_WITH_TERMINATOR_KIND #undef CARBON_SEMANTICS_NODE_KIND