diff --git a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td index e85a6ec1950ec..29d8aea8d08e7 100644 --- a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td +++ b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td @@ -14,10 +14,10 @@ #define CLANG_CIR_DIALECT_IR_CIRATTRS_TD include "mlir/IR/BuiltinAttributeInterfaces.td" -include "mlir/IR/EnumAttr.td" -include "clang/CIR/Dialect/IR/CIRDialect.td" include "clang/CIR/Dialect/IR/CIRAttrConstraints.td" +include "clang/CIR/Dialect/IR/CIRDialect.td" +include "clang/CIR/Dialect/IR/CIREnumAttr.td" //===----------------------------------------------------------------------===// // CIR Attrs @@ -42,21 +42,6 @@ class CIR_TypedAttr traits = []> let assemblyFormat = [{}]; } -class CIR_I32EnumAttr cases> - : I32EnumAttr { - let cppNamespace = "::cir"; -} - -class CIR_I64EnumAttr cases> - : I64EnumAttr { - let cppNamespace = "::cir"; -} - -class CIR_EnumAttr traits = []> - : EnumAttr { - let assemblyFormat = "`<` $value `>`"; -} - class CIRUnitAttr traits = []> : CIR_Attr { let returnType = "bool"; diff --git a/clang/include/clang/CIR/Dialect/IR/CIREnumAttr.td b/clang/include/clang/CIR/Dialect/IR/CIREnumAttr.td new file mode 100644 index 0000000000000..98b8a31d2a18a --- /dev/null +++ b/clang/include/clang/CIR/Dialect/IR/CIREnumAttr.td @@ -0,0 +1,38 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the CIR dialect enum base classes +// +//===----------------------------------------------------------------------===// + +#ifndef CLANG_CIR_DIALECT_IR_CIRENUMATTR_TD +#define CLANG_CIR_DIALECT_IR_CIRENUMATTR_TD + +include "mlir/IR/EnumAttr.td" + +class CIR_I32EnumAttr cases> + : I32EnumAttr { + let cppNamespace = "::cir"; +} + +class CIR_I64EnumAttr cases> + : I64EnumAttr { + let cppNamespace = "::cir"; +} + +class CIR_EnumAttr traits = []> + : EnumAttr { + let assemblyFormat = "`<` $value `>`"; +} + +class CIR_DefaultValuedEnumParameter + : EnumParameter { + let defaultValue = value; +} + +#endif // CLANG_CIR_DIALECT_IR_CIRENUMATTR_TD