Flatten two terminator kind macros into one. (#2948)

As requested in #2942.
This commit is contained in:
Richard Smith
2023-06-26 15:44:46 -07:00
committed by GitHub
parent 4b69264cb1
commit 3a9bc01ec4
2 changed files with 11 additions and 23 deletions
+2 -4
View File
@@ -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()];
+9 -19
View File
@@ -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