https://github.com/xlauko created https://github.com/llvm/llvm-project/pull/220892
This leaves no CIR enum attribute mnemonic repeating what its C++ enum class name already says. inline_kind was the last one, and keeping it meant the stack established a convention and then violated it in a file it was editing. The attribute now spells `#cir.inline<always_inline>`. The operation argument is still named inline_kind, since that is the accessor name and unrelated to the mnemonic, so the printed form reads `inline_kind = #cir.inline<always_inline>`. While here, the enum's summary becomes "inline kind" instead of the camelCase "inlineKind". That summary is what the generated dialect docs now show, since CIR_InlineKindAttr no longer overrides it with a restatement of its own name. 25 CHECK lines change across four test files. Nine of them are in CodeGen/AArch64/sme-inline-callees-streaming-attrs.c, which is `REQUIRES: aarch64-registered-target` and so unsupported in an X86-only build. The substitution there is identical to the one verified by CIR/CodeGen/callsite-inline-attributes.cpp and CIR/IR/inline-attrs.cir. --- Stacked on #220891. Based on `users/xlauko/cir-enum-12-emitter-cppclassname`, so the diff shown is this commit alone. >From f40a1d0e14e7175c36a953148f5c7e7f77a3b60a Mon Sep 17 00:00:00 2001 From: Henrich Lauko <[email protected]> Date: Thu, 3 Sep 2026 11:29:23 +0000 Subject: [PATCH] [CIR] Drop the redundant suffix from the inline kind mnemonic This leaves no CIR enum attribute mnemonic repeating what its C++ enum class name already says. inline_kind was the last one, and keeping it meant the stack established a convention and then violated it in a file it was editing. The attribute now spells `#cir.inline<always_inline>`. The operation argument is still named inline_kind, since that is the accessor name and unrelated to the mnemonic, so the printed form reads `inline_kind = #cir.inline<always_inline>`. While here, the enum's summary becomes "inline kind" instead of the camelCase "inlineKind". That summary is what the generated dialect docs now show, since CIR_InlineKindAttr no longer overrides it with a restatement of its own name. 25 CHECK lines change across four test files. Nine of them are in CodeGen/AArch64/sme-inline-callees-streaming-attrs.c, which is `REQUIRES: aarch64-registered-target` and so unsupported in an X86-only build. The substitution there is identical to the one verified by CIR/CodeGen/callsite-inline-attributes.cpp and CIR/IR/inline-attrs.cir. --- clang/include/clang/CIR/Dialect/IR/CIRAttrs.td | 5 ++--- .../CIR/CodeGen/callsite-inline-attributes.cpp | 18 +++++++++--------- clang/test/CIR/IR/inline-attrs.cir | 12 ++++++------ clang/test/CIR/IR/invalid-call.cir | 2 +- .../sme-inline-callees-streaming-attrs.c | 18 +++++++++--------- 5 files changed, 27 insertions(+), 28 deletions(-) diff --git a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td index ae288626c732f..b555d1942391b 100644 --- a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td +++ b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td @@ -1680,14 +1680,13 @@ def CIR_TypeInfoAttr : CIR_ValueLikeAttr<"TypeInfo", "typeinfo"> { // InlineKindAttr //===----------------------------------------------------------------------===// -def CIR_InlineKind : CIR_I32EnumAttr<"InlineKind", "inlineKind", [ +def CIR_InlineKind : CIR_I32EnumAttr<"InlineKind", "inline kind", [ I32EnumAttrCase<"NoInline", 1, "no_inline">, I32EnumAttrCase<"AlwaysInline", 2, "always_inline">, I32EnumAttrCase<"InlineHint", 3, "inline_hint"> ]>; -def CIR_InlineKindAttr: CIR_EnumAttr<CIR_InlineKind, "inline_kind"> { - let summary = "Inline kind attribute"; +def CIR_InlineKindAttr: CIR_EnumAttr<CIR_InlineKind, "inline"> { let description = [{ Inline Kind attributes. `no_inline` and `always_inline` spellings correspond to the attributes of the same name, and `inline_hint` is the `inline` keyword in the language.}]; diff --git a/clang/test/CIR/CodeGen/callsite-inline-attributes.cpp b/clang/test/CIR/CodeGen/callsite-inline-attributes.cpp index d9916e725ca50..272645461ed81 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 = #cir.inline_kind<always_inline>} + // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline<always_inline>} // LLVM: call void @_Z6calleev() #[[ALWAYSINLINE:.*]] [[clang::noinline]] callee(); - // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline_kind<no_inline>} + // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline<no_inline>} // LLVM: call void @_Z6calleev() #[[NOINLINE:.*]] [[clang::always_inline]] fptr(); - // CIR: cir.call %{{.*}}() {inline_kind = #cir.inline_kind<always_inline>} + // CIR: cir.call %{{.*}}() {inline_kind = #cir.inline<always_inline>} // LLVM: call void %{{.*}}() #[[ALWAYSINLINE]] [[clang::noinline]] fptr(); - // CIR: cir.call %{{.*}}() {inline_kind = #cir.inline_kind<no_inline>} + // CIR: cir.call %{{.*}}() {inline_kind = #cir.inline<no_inline>} // LLVM: call void %{{.*}}() #[[NOINLINE]] [[clang::always_inline]] { callee(); - // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline_kind<always_inline>} + // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline<always_inline>} // LLVM: call void @_Z6calleev() #[[ALWAYSINLINE]] fptr(); - // CIR: cir.call %{{.*}}() {inline_kind = #cir.inline_kind<always_inline>} + // CIR: cir.call %{{.*}}() {inline_kind = #cir.inline<always_inline>} // LLVM: call void %{{.*}}() #[[ALWAYSINLINE]] } [[clang::noinline]] { callee(); - // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline_kind<no_inline>} + // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline<no_inline>} // LLVM: call void @_Z6calleev() #[[NOINLINE]] fptr(); - // CIR: cir.call %{{.*}}() {inline_kind = #cir.inline_kind<no_inline>} + // CIR: cir.call %{{.*}}() {inline_kind = #cir.inline<no_inline>} // LLVM: call void %{{.*}}() #[[NOINLINE]] } @@ -54,7 +54,7 @@ void caller() { { [[clang::always_inline]] callee(); - // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline_kind<always_inline>} + // CIR: cir.call @_Z6calleev() {inline_kind = #cir.inline<always_inline>} // LLVM: call void @_Z6calleev() #[[ALWAYSINLINE]] } } diff --git a/clang/test/CIR/IR/inline-attrs.cir b/clang/test/CIR/IR/inline-attrs.cir index 5a09432532927..2e6bd83b8c727 100644 --- a/clang/test/CIR/IR/inline-attrs.cir +++ b/clang/test/CIR/IR/inline-attrs.cir @@ -40,12 +40,12 @@ module { cir.func private @callee() // // CHECK-LABEL: cir.func no_inline dso_local @caller() cir.func no_inline dso_local @caller() { - cir.call @callee() {inline_kind = #cir.inline_kind<always_inline>} : () -> () - // CHECK: cir.call @callee() {inline_kind = #cir.inline_kind<always_inline>} : () -> () - cir.call @callee() {inline_kind = #cir.inline_kind<no_inline>} : () -> () - // CHECK: cir.call @callee() {inline_kind = #cir.inline_kind<no_inline>} : () -> () - cir.call @callee() {inline_kind = #cir.inline_kind<inline_hint>} : () -> () - // CHECK: cir.call @callee() {inline_kind = #cir.inline_kind<inline_hint>} : () -> () + cir.call @callee() {inline_kind = #cir.inline<always_inline>} : () -> () + // CHECK: cir.call @callee() {inline_kind = #cir.inline<always_inline>} : () -> () + cir.call @callee() {inline_kind = #cir.inline<no_inline>} : () -> () + // CHECK: cir.call @callee() {inline_kind = #cir.inline<no_inline>} : () -> () + cir.call @callee() {inline_kind = #cir.inline<inline_hint>} : () -> () + // CHECK: cir.call @callee() {inline_kind = #cir.inline<inline_hint>} : () -> () cir.call @callee() {inline_kind = 2} : () -> () // CHECK: cir.call @callee() : () -> () cir.call @callee() {inline_kind = 6} : () -> () diff --git a/clang/test/CIR/IR/invalid-call.cir b/clang/test/CIR/IR/invalid-call.cir index e7ac24ea0bae0..39fc157ed728f 100644 --- a/clang/test/CIR/IR/invalid-call.cir +++ b/clang/test/CIR/IR/invalid-call.cir @@ -101,6 +101,6 @@ cir.func private @f16() cir.func @f17() { // expected-error@+2{{failed to parse CIR_InlineKindAttr parameter 'value' which is to be a `::cir::InlineKind`}} // expected-error@below{{expected ::cir::InlineKind to be one of: no_inline, always_inline, inline_hint}} - cir.call @f16() { inline_kind = #cir.inline_kind<nonsense> } : () -> () + cir.call @f16() { inline_kind = #cir.inline<nonsense> } : () -> () cir.return } diff --git a/clang/test/CodeGen/AArch64/sme-inline-callees-streaming-attrs.c b/clang/test/CodeGen/AArch64/sme-inline-callees-streaming-attrs.c index b7872dfad6551..dd9fa35c3333b 100644 --- a/clang/test/CodeGen/AArch64/sme-inline-callees-streaming-attrs.c +++ b/clang/test/CodeGen/AArch64/sme-inline-callees-streaming-attrs.c @@ -45,8 +45,8 @@ void caller(void) { // CHECK-NEXT: call void @fn_streaming_new_zt0 // CIR-LABEL: @caller() -// CIR: cir.call @fn() {inline_kind = #cir.inline_kind<always_inline>} -// CIR: cir.call @fn_streaming_compatible() {inline_kind = #cir.inline_kind<always_inline>} +// CIR: cir.call @fn() {inline_kind = #cir.inline<always_inline>} +// CIR: cir.call @fn_streaming_compatible() {inline_kind = #cir.inline<always_inline>} // CIR: cir.call @fn_streaming() // CIR-NOT: inline_kind // CIR: cir.call @fn_locally_streaming() @@ -75,7 +75,7 @@ FN_ATTR void caller_streaming_compatible(void) __arm_streaming_compatible { // CIR-LABEL: @caller_streaming_compatible() // CIR: cir.call @fn() // CIR-NOT: inline_kind -// CIR: cir.call @fn_streaming_compatible() {inline_kind = #cir.inline_kind<always_inline>} +// CIR: cir.call @fn_streaming_compatible() {inline_kind = #cir.inline<always_inline>} // CIR: cir.call @fn_streaming() // CIR-NOT: inline_kind // CIR: cir.call @fn_locally_streaming() @@ -104,9 +104,9 @@ FN_ATTR void caller_streaming(void) __arm_streaming { // CIR-LABEL: @caller_streaming() // CIR: cir.call @fn() // CIR-NOT: inline_kind -// CIR: cir.call @fn_streaming_compatible() {inline_kind = #cir.inline_kind<always_inline>} -// CIR: cir.call @fn_streaming() {inline_kind = #cir.inline_kind<always_inline>} -// CIR: cir.call @fn_locally_streaming() {inline_kind = #cir.inline_kind<always_inline>} +// CIR: cir.call @fn_streaming_compatible() {inline_kind = #cir.inline<always_inline>} +// CIR: cir.call @fn_streaming() {inline_kind = #cir.inline<always_inline>} +// CIR: cir.call @fn_locally_streaming() {inline_kind = #cir.inline<always_inline>} // CIR: cir.call @fn_streaming_new_za() // CIR-NOT: inline_kind // CIR: cir.call @fn_streaming_new_zt0() @@ -132,9 +132,9 @@ void caller_locally_streaming(void) { // CIR-LABEL: @caller_locally_streaming() // CIR: cir.call @fn() // CIR-NOT: inline_kind -// CIR: cir.call @fn_streaming_compatible() {inline_kind = #cir.inline_kind<always_inline>} -// CIR: cir.call @fn_streaming() {inline_kind = #cir.inline_kind<always_inline>} -// CIR: cir.call @fn_locally_streaming() {inline_kind = #cir.inline_kind<always_inline>} +// CIR: cir.call @fn_streaming_compatible() {inline_kind = #cir.inline<always_inline>} +// CIR: cir.call @fn_streaming() {inline_kind = #cir.inline<always_inline>} +// CIR: cir.call @fn_locally_streaming() {inline_kind = #cir.inline<always_inline>} // CIR: cir.call @fn_streaming_new_za() // CIR-NOT: inline_kind // CIR: cir.call @fn_streaming_new_zt0() _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
