llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clangir Author: Erich Keane (erichkeane) <details> <summary>Changes</summary> If we use the builtin automatic inline-kind here, we don't get to have it printed reasonably/normally. This patch adds the 'genSpecializedAttr=0' and adds an explicit attribute so we print it as an enum value. --- Full diff: https://github.com/llvm/llvm-project/pull/215335.diff 3 Files Affected: - (modified) clang/include/clang/CIR/Dialect/IR/CIRAttrs.td (+9-1) - (modified) clang/include/clang/CIR/Dialect/IR/CIROps.td (+2-2) - (modified) clang/test/CIR/CodeGen/callsite-inline-attributes.cpp (+8-8) ``````````diff diff --git a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td index 71585cd83fb66..5cb773035a8fd 100644 --- a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td +++ b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td @@ -1695,7 +1695,15 @@ def CIR_InlineKind : CIR_I32EnumAttr<"InlineKind", "inlineKind", [ I32EnumAttrCase<"NoInline", 1, "no_inline">, I32EnumAttrCase<"AlwaysInline", 2, "always_inline">, I32EnumAttrCase<"InlineHint", 3, "inline_hint"> -]>; +]> { + let genSpecializedAttr = 0; +} + +def CIR_InlineKindAttr: CIR_EnumAttr<CIR_InlineKind, "inline_kind"> { + let summary = "Inline kind attribute"; + let description = [{ Inline Kind attributes }]; + let cppClassName = "InlineKindAttr"; +} //===----------------------------------------------------------------------===// // CatchAllAttr & UnwindAttr diff --git a/clang/include/clang/CIR/Dialect/IR/CIROps.td b/clang/include/clang/CIR/Dialect/IR/CIROps.td index d0f3c9ee6715f..815dc5c8cddad 100644 --- a/clang/include/clang/CIR/Dialect/IR/CIROps.td +++ b/clang/include/clang/CIR/Dialect/IR/CIROps.td @@ -4221,7 +4221,7 @@ def CIR_FuncOp : CIR_Op<"func", [ TypeAttrOf<CIR_FuncType>:$function_type, UnitAttr:$builtin, UnitAttr:$coroutine, - OptionalAttr<CIR_InlineKind>:$inline_kind, + OptionalAttr<CIR_InlineKindAttr>:$inline_kind, UnitAttr:$lambda, UnitAttr:$no_proto, UnitAttr:$dso_local, @@ -4540,7 +4540,7 @@ class CIR_CallOpBase<string mnemonic, list<Trait> extra_traits = []> dag commonArgs = (ins OptionalAttr<FlatSymbolRefAttr>:$callee, Variadic<CIR_AnyType>:$args, UnitAttr:$nothrow, - OptionalAttr<CIR_InlineKind>:$inline_kind, + OptionalAttr<CIR_InlineKindAttr>:$inline_kind, UnitAttr:$musttail, DefaultValuedAttr<CIR_SideEffect, "SideEffect::All">:$side_effect, OptionalAttr<DictArrayAttr>:$arg_attrs, diff --git a/clang/test/CIR/CodeGen/callsite-inline-attributes.cpp b/clang/test/CIR/CodeGen/callsite-inline-attributes.cpp index 06422d36539c6..13a4fcfbb690c 100644 --- a/clang/test/CIR/CodeGen/callsite-inline-attributes.cpp +++ b/clang/test/CIR/CodeGen/callsite-inline-attributes.cpp @@ -14,39 +14,39 @@ void caller() { [[clang::always_inline]] callee(); - // CIR: cir.call @_Z6calleev() {inline_kind = 2 : i32} + // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline_kind<always_inline>} // LLVM: call void @_Z6calleev() #[[ALWAYSINLINE:.*]] [[clang::noinline]] callee(); - // CIR: cir.call @_Z6calleev() {inline_kind = 1 : i32} + // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline_kind<no_inline>} // LLVM: call void @_Z6calleev() #[[NOINLINE:.*]] [[clang::always_inline]] fptr(); - // CIR: cir.call %{{.*}}() {inline_kind = 2 : i32} + // CIR: cir.call %{{.*}}() {inline_kind = #cir.inline_kind<always_inline>} // LLVM: call void %{{.*}}() #[[ALWAYSINLINE]] [[clang::noinline]] fptr(); - // CIR: cir.call %{{.*}}() {inline_kind = 1 : i32} + // CIR: cir.call %{{.*}}() {inline_kind = #cir.inline_kind<no_inline>} // LLVM: call void %{{.*}}() #[[NOINLINE]] [[clang::always_inline]] { callee(); - // CIR: cir.call @_Z6calleev() {inline_kind = 2 : i32} + // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline_kind<always_inline>} // LLVM: call void @_Z6calleev() #[[ALWAYSINLINE]] fptr(); - // CIR: cir.call %{{.*}}() {inline_kind = 2 : i32} + // CIR: cir.call %{{.*}}() {inline_kind = #cir.inline_kind<always_inline>} // LLVM: call void %{{.*}}() #[[ALWAYSINLINE]] } [[clang::noinline]] { callee(); - // CIR: cir.call @_Z6calleev() {inline_kind = 1 : i32} + // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline_kind<no_inline>} // LLVM: call void @_Z6calleev() #[[NOINLINE]] fptr(); - // CIR: cir.call %{{.*}}() {inline_kind = 1 : i32} + // CIR: cir.call %{{.*}}() {inline_kind = #cir.inline_kind<no_inline>} // LLVM: call void %{{.*}}() #[[NOINLINE]] } } `````````` </details> https://github.com/llvm/llvm-project/pull/215335 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
