llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clangir

Author: Mehdi Amini (joker-eph)

<details>
<summary>Changes</summary>

Bind inherent attributes explicitly in CIR operation formats and update 
assembly tests for the resulting syntax.

Assisted-by: Codex

---

Patch is 432.40 KiB, truncated to 20.00 KiB below, full version: 
https://github.com/llvm/llvm-project/pull/226600.diff


80 Files Affected:

- (modified) clang/include/clang/CIR/Dialect/IR/CIROps.td (+35-10) 
- (modified) clang/test/CIR/Analysis/alias-analysis-modref.cir (+1-1) 
- (modified) clang/test/CIR/Analysis/alias-analysis-underlying-object.cir 
(+22-22) 
- (modified) clang/test/CIR/CodeGen/aapcs-volatile-bitfields.c (+7-7) 
- (modified) clang/test/CIR/CodeGen/alignment.c (+3-3) 
- (modified) clang/test/CIR/CodeGen/atomic.c (+6-6) 
- (modified) clang/test/CIR/CodeGen/bitfield-union.c (+2-2) 
- (modified) clang/test/CIR/CodeGen/bitfields.c (+11-11) 
- (modified) clang/test/CIR/CodeGen/bitfields.cpp (+4-4) 
- (modified) clang/test/CIR/CodeGen/bitfields_be.c (+4-4) 
- (modified) clang/test/CIR/CodeGen/bitint-memory.c (+10-10) 
- (modified) clang/test/CIR/CodeGen/bitint-record-layout.c (+16-16) 
- (modified) clang/test/CIR/CodeGen/bitint-wide-be.c (+8-8) 
- (modified) clang/test/CIR/CodeGen/bitint-wide.c (+7-7) 
- (modified) clang/test/CIR/CodeGen/bitint.c (+2-2) 
- (modified) clang/test/CIR/CodeGen/bool-bitfield.cpp (+9-9) 
- (modified) clang/test/CIR/CodeGen/builtin-call.cpp (+1-2) 
- (modified) clang/test/CIR/CodeGen/compound_literal.c (+21-21) 
- (modified) clang/test/CIR/CodeGen/cxx-default-init.cpp (+2-2) 
- (modified) clang/test/CIR/CodeGen/delete-array-aligned.cpp (+5-5) 
- (modified) clang/test/CIR/CodeGen/delete-array-overaligned-cookie.cpp (+2-2) 
- (modified) clang/test/CIR/CodeGen/delete-array-throwing-dtor.cpp (+1-1) 
- (modified) clang/test/CIR/CodeGen/delete-array-unsized-dtor.cpp (+4-4) 
- (modified) clang/test/CIR/CodeGen/delete-array.cpp (+7-7) 
- (modified) clang/test/CIR/CodeGen/empty-union.cpp (+1-1) 
- (modified) clang/test/CIR/CodeGen/finegrain-bitfield-access.cpp (+10-10) 
- (modified) clang/test/CIR/CodeGen/fixed-point-literal.c (+6-6) 
- (modified) clang/test/CIR/CodeGen/fp-contract.c (+2-2) 
- (modified) clang/test/CIR/CodeGen/global-const-alignment.cpp (+2-2) 
- (modified) clang/test/CIR/CodeGen/global-init-fenv.cpp (+8-8) 
- (modified) clang/test/CIR/CodeGen/global-section.c (+3-3) 
- (modified) clang/test/CIR/CodeGen/global-tls-dyn-init.cpp (+1-1) 
- (modified) clang/test/CIR/CodeGen/globals.cpp (+1-1) 
- (modified) clang/test/CIR/CodeGen/lambda.cpp (+1-1) 
- (modified) clang/test/CIR/CodeGen/local-const-aggregate-name-clash.cpp (+2-2) 
- (modified) clang/test/CIR/CodeGen/no-odr-use.cpp (+2-2) 
- (modified) clang/test/CIR/CodeGen/non-odr-use-non-ref.cpp (+1-1) 
- (modified) clang/test/CIR/CodeGen/nonzeroinit-struct.cpp (+7-7) 
- (modified) clang/test/CIR/CodeGen/paren-list-agg-init.cpp (+8-8) 
- (modified) clang/test/CIR/CodeGen/pointer-to-data-member-indirect-field.cpp 
(+2-2) 
- (modified) clang/test/CIR/CodeGen/pointer-width-32bit.cpp (+3-3) 
- (modified) clang/test/CIR/CodeGen/pragma-fenv_access.c (+367-367) 
- (modified) clang/test/CIR/CodeGen/predefined-expr.c (+1-1) 
- (modified) clang/test/CIR/CodeGen/source-loc.cpp (+1-1) 
- (modified) clang/test/CIR/CodeGen/static-local-in-ctor.cpp (+2-2) 
- (modified) clang/test/CIR/CodeGen/static-local-info.cpp (+4-4) 
- (modified) clang/test/CIR/CodeGen/struct.cpp (+1-1) 
- (modified) clang/test/CIR/CodeGen/tls-model.cpp (+32-32) 
- (modified) clang/test/CIR/CodeGen/union-agg-init.c (+2-2) 
- (modified) clang/test/CIR/CodeGen/vbase.cpp (+1-1) 
- (modified) clang/test/CIR/CodeGen/vector-strict-fp.cpp (+5-5) 
- (modified) clang/test/CIR/CodeGen/volatile.cpp (+2-2) 
- (modified) clang/test/CIR/CodeGen/vtt.cpp (+2-2) 
- (modified) clang/test/CIR/CodeGenCUDA/address-spaces.cu (+5-5) 
- (modified) clang/test/CIR/CodeGenCUDA/device-stub.cu (+5-5) 
- (modified) clang/test/CIR/CodeGenCUDA/kernel-call.cu (+1-1) 
- (modified) clang/test/CIR/CodeGenCXX/global-refs.cpp (+18-18) 
- (modified) clang/test/CIR/CodeGenCXX/init-priority-attr.cpp (+5-5) 
- (modified) clang/test/CIR/CodeGenCXX/vtable-linkage.cpp (+38-38) 
- (modified) clang/test/CIR/CodeGenCXX/zero_init_bases.cpp (+3-3) 
- (modified) clang/test/CIR/IR/attribute-visibility.cir (+8-8) 
- (modified) clang/test/CIR/IR/fenv.cir (+51-52) 
- (modified) clang/test/CIR/IR/invalid-cast.cir (+5-5) 
- (modified) clang/test/CIR/IR/invalid-cmp.cir (+3-5) 
- (modified) clang/test/CIR/IR/invalid-delete-array.cir (+2-2) 
- (modified) clang/test/CIR/IR/invalid-static-local-info.cir (+1-1) 
- (modified) clang/test/CIR/IR/invalid-static-local.cir (+3-3) 
- (modified) clang/test/CIR/IR/invalid-tls.cir (+1-1) 
- (modified) clang/test/CIR/IR/invalid-vtable.cir (+7-7) 
- (modified) clang/test/CIR/IR/static-local-info.cir (+6-6) 
- (modified) clang/test/CIR/IR/static-local.cir (+5-5) 
- (modified) clang/test/CIR/IR/string-trailing-zeros.cir (+2-2) 
- (modified) clang/test/CIR/IR/var-registration.cir (+2-2) 
- (modified) clang/test/CIR/IR/vtable-addrpt.cir (+1-1) 
- (modified) clang/test/CIR/IR/vtable-attr.cir (+4-4) 
- (modified) clang/test/CIR/IR/vtt-addrpoint.cir (+3-3) 
- (modified) clang/test/CIR/Lowering/call-llvm-intrinsic.cir (+2-2) 
- (modified) clang/test/CIR/Lowering/fenv.cir (+54-56) 
- (modified) clang/test/CIR/Lowering/vtt-addrpoint.cir (+3-3) 
- (modified) clang/test/CIR/Transforms/vector-cmp-fold.cir (+3-4) 


``````````diff
diff --git a/clang/include/clang/CIR/Dialect/IR/CIROps.td 
b/clang/include/clang/CIR/Dialect/IR/CIROps.td
index 4996037ea5f56..cd1636f1f8510 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIROps.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIROps.td
@@ -327,7 +327,8 @@ def CIR_CastOp : CIR_Op<"cast", !listconcat([
   let results = (outs CIR_AnyType:$result);
 
   let assemblyFormat = [{
-    enum($kind) $src `:` type($src) `->` type($result) attr-dict
+    enum($kind) $src `:` type($src) `->` type($result)
+    (`fenv` `(` $fenv^ `)`)? attr-dict
   }];
 
   let builders = [
@@ -2632,7 +2633,8 @@ def CIR_CmpOp : CIR_Op<"cmp",
   let results = (outs CIR_BoolType:$result);
 
   let assemblyFormat = [{
-    enum($kind) $lhs `,` $rhs `:` type($lhs) attr-dict
+    enum($kind) $lhs `,` $rhs `:` type($lhs)
+    (`fenv` `(` $fenv^ `)`)? attr-dict
   }];
 
   let builders = [
@@ -2947,6 +2949,9 @@ class CIR_FPBinaryOp<string mnemonic, list<Trait> traits 
= []>
                    !listconcat(CIR_FenvOpTraits, traits),
                    CIR_DynamicMemoryEffects> {
   let arguments = !con(commonArgs, (ins OptionalAttr<CIR_FenvAttr>:$fenv));
+  let assemblyFormat = [{
+    $lhs `,` $rhs `:` type($lhs) (`fenv` `(` $fenv^ `)`)? attr-dict
+  }];
 
   let constrainedLLVMIntrinsic = mnemonic;
 
@@ -3475,6 +3480,12 @@ def CIR_GlobalOp : CIR_RegionBranchOpBase<"global", [
     custom<GlobalOpTypeAndInitialValue>($sym_type, $initial_value,
                                         $ctorRegion, $dtorRegion)
     ($annotations^)?
+    (`align` `(` $alignment^ `)`)?
+    (`ast` `(` $ast^ `)`)?
+    (`static_local_info` `(` $static_local_info^ `)`)?
+    (`section` `(` $section^ `)`)?
+    (`strictfp` $strictfp^)?
+    (`init_priority` `(` $init_priority^ `)`)?
     attr-dict
   }];
 
@@ -3871,6 +3882,7 @@ def CIR_SetBitfieldOp : CIR_Op<"set_bitfield"> {
 
   let assemblyFormat = [{
     (`align` `(` $alignment^ `)`)?
+    (`volatile` $is_volatile^)?
     `(`$bitfield_info`,` $addr`:`qualified(type($addr))`,`
     $src`:`type($src) `)`  attr-dict `->` type($result) }];
 
@@ -3959,6 +3971,7 @@ def CIR_GetBitfieldOp : CIR_Op<"get_bitfield"> {
 
   let assemblyFormat = [{
     (`align` `(` $alignment^ `)`)?
+    (`volatile` $is_volatile^)?
     `(`$bitfield_info `,` $addr attr-dict `:`
     qualified(type($addr)) `)` `->` type($result) }];
 
@@ -4016,7 +4029,7 @@ def CIR_GetMemberOp : CIR_Op<"get_member", [Pure]> {
   let results = (outs Res<CIR_PointerType, "">:$result);
 
   let assemblyFormat = [{
-    $addr `[` $index_attr `]` attr-dict
+    $addr `[` $index_attr `]` `{` `name` `=` $name `}` attr-dict
     `:` qualified(type($addr)) `->` qualified(type($result))
   }];
 
@@ -4527,7 +4540,8 @@ def CIR_LLVMIntrinsicCallOp : 
CIR_Op<"call_llvm_intrinsic"> {
   let skipDefaultBuilders = 1;
 
   let assemblyFormat = [{
-    $intrinsic_name $arg_ops `:` functional-type($arg_ops, $result) attr-dict
+    $intrinsic_name $arg_ops `:` functional-type($arg_ops, $result)
+    (`fastmath` `(` $fastmath_flags^ `)`)? attr-dict
   }];
 
   let builders = [
@@ -4591,7 +4605,12 @@ def CIR_DeleteArrayOp : CIR_Op<"delete_array"> {
   ];
 
   let assemblyFormat = [{
-    $address `:` qualified(type($address)) (`dtor_may_throw` $dtor_may_throw^)?
+    $address `:` qualified(type($address))
+    `delete_fn` `(` $delete_fn `)`
+    `delete_params` `(` $delete_params `)`
+    (`element_dtor` `(` $element_dtor^ `)`)?
+    (`dtor_may_throw` $dtor_may_throw^)?
+    `element_align` `(` $element_align `)`
     attr-dict
   }];
 
@@ -6101,7 +6120,7 @@ def CIR_VecCmpOp : CIR_Op<"vec.cmp",
 
   let assemblyFormat = [{
     `(` enum($kind) `,` $lhs `,` $rhs `)` `:` qualified(type($lhs)) `,`
-    qualified(type($result)) attr-dict
+    qualified(type($result)) (`fenv` `(` $fenv^ `)`)? attr-dict
   }];
 
   let builders = [
@@ -7451,7 +7470,7 @@ class CIR_UnaryFPToFPBuiltinOp<string mnemonic, string 
llvmOpName>
                        OptionalAttr<CIR_FenvAttr>:$fenv);
   let results = (outs CIR_AnyFloatOrVecOfFloatType:$result);
 
-  let assemblyFormat = "$src `:` type($src) attr-dict";
+  let assemblyFormat = "$src `:` type($src) (`fenv` `(` $fenv^ `)`)? 
attr-dict";
 
   let builders = [
     OpBuilder<(ins "mlir::Value":$src), [{
@@ -7779,7 +7798,8 @@ class CIR_UnaryFPToIntBuiltinOp<string mnemonic, string 
llvmOpName>
   }];
 
   let assemblyFormat = [{
-    $src `:` type($src) `->` type($result) attr-dict
+    $src `:` type($src) `->` type($result)
+    (`fenv` `(` $fenv^ `)`)? attr-dict
   }];
 
   let builders = [
@@ -7845,7 +7865,8 @@ class CIR_BinaryFPToFPBuiltinOp<string mnemonic, string 
llvmOpName>
   let results = (outs  CIR_AnyFloatOrVecOfFloatType:$result);
 
   let assemblyFormat = [{
-    $lhs `,` $rhs `:` qualified(type($lhs)) attr-dict
+    $lhs `,` $rhs `:` qualified(type($lhs))
+    (`fenv` `(` $fenv^ `)`)? attr-dict
   }];
 
   let builders = [
@@ -7996,7 +8017,9 @@ class CIR_TernaryFPToFPBuiltinOp<string mnemonic, string 
llvmOpName>
 
   let results = (outs CIR_AnyFloatOrVecOfFloatType:$result);
 
-  let assemblyFormat = "$a `,` $b `,` $c `:` type($a) attr-dict";
+  let assemblyFormat = [{
+    $a `,` $b `,` $c `:` type($a) (`fenv` `(` $fenv^ `)`)? attr-dict
+  }];
 
   let builders = [
     OpBuilder<(ins "mlir::Type":$result, "mlir::Value":$a, "mlir::Value":$b,
@@ -9422,6 +9445,7 @@ def CIR_AtomicTestAndSetOp : 
CIR_Op<"atomic.test_and_set"> {
 
   let assemblyFormat = [{
     enum($mem_order) $ptr
+    (`align` `(` $alignment^ `)`)?
     (`volatile` $is_volatile^)?
     `:` qualified(type($ptr)) `->` qualified(type($result)) attr-dict
   }];
@@ -9451,6 +9475,7 @@ def CIR_AtomicClearOp : CIR_Op<"atomic.clear"> {
 
   let assemblyFormat = [{
     enum($mem_order) $ptr
+    (`align` `(` $alignment^ `)`)?
     (`volatile` $is_volatile^)?
     `:` qualified(type($ptr)) attr-dict
   }];
diff --git a/clang/test/CIR/Analysis/alias-analysis-modref.cir 
b/clang/test/CIR/Analysis/alias-analysis-modref.cir
index d02a6f06bfc3e..b39922fee1118 100644
--- a/clang/test/CIR/Analysis/alias-analysis-modref.cir
+++ b/clang/test/CIR/Analysis/alias-analysis-modref.cir
@@ -51,6 +51,6 @@ cir.func @modref_load() {
 !s32i = !cir.int<s, 32>
 cir.func @modref_fenv(%a: !cir.float, %b: !cir.float) {
   %x = cir.alloca "x" align(4) : !cir.ptr<!s32i> {test.ptr = "x"}
-  %0 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<>, test.ptr = "fadd_op"}
+  %0 = cir.fadd %a, %b : !cir.float fenv(#cir.fenv<>) {test.ptr = "fadd_op"}
   cir.return
 }
diff --git a/clang/test/CIR/Analysis/alias-analysis-underlying-object.cir 
b/clang/test/CIR/Analysis/alias-analysis-underlying-object.cir
index 3f45ee74c59dc..017ae426a7a22 100644
--- a/clang/test/CIR/Analysis/alias-analysis-underlying-object.cir
+++ b/clang/test/CIR/Analysis/alias-analysis-underlying-object.cir
@@ -167,13 +167,13 @@ cir.func @ptr_stride_dynamic_offset(%n: !s32i) {
 cir.func @get_member_distinct_allocas() {
   %s1 = cir.alloca "s1" align(4) : !cir.ptr<!rec_S> {test.ptr = "s1"}
   %s2 = cir.alloca "s2" align(4) : !cir.ptr<!rec_S> {test.ptr = "s2"}
-  %m1_0 = cir.get_member %s1[0] {name = "x", test.ptr = "m1_0"}
+  %m1_0 = cir.get_member %s1[0] {name = "x"} {test.ptr = "m1_0"}
           : !cir.ptr<!rec_S> -> !cir.ptr<!s32i>
-  %m1_1 = cir.get_member %s1[1] {name = "y", test.ptr = "m1_1"}
+  %m1_1 = cir.get_member %s1[1] {name = "y"} {test.ptr = "m1_1"}
           : !cir.ptr<!rec_S> -> !cir.ptr<!s32i>
-  %m2_0 = cir.get_member %s2[0] {name = "x", test.ptr = "m2_0"}
+  %m2_0 = cir.get_member %s2[0] {name = "x"} {test.ptr = "m2_0"}
           : !cir.ptr<!rec_S> -> !cir.ptr<!s32i>
-  %m2_1 = cir.get_member %s2[1] {name = "y", test.ptr = "m2_1"}
+  %m2_1 = cir.get_member %s2[1] {name = "y"} {test.ptr = "m2_1"}
           : !cir.ptr<!rec_S> -> !cir.ptr<!s32i>
   cir.return
 }
@@ -197,13 +197,13 @@ cir.func @get_member_distinct_allocas() {
 !rec_Outer = !cir.struct<"Outer" {data !rec_Inner, data !s32i}>
 cir.func @get_member_nested_records() {
   %o = cir.alloca "o" align(4) : !cir.ptr<!rec_Outer> {test.ptr = "o"}
-  %inner = cir.get_member %o[0] {name = "inner", test.ptr = "inner"}
+  %inner = cir.get_member %o[0] {name = "inner"} {test.ptr = "inner"}
            : !cir.ptr<!rec_Outer> -> !cir.ptr<!rec_Inner>
-  %i0 = cir.get_member %inner[0] {name = "x", test.ptr = "i0"}
+  %i0 = cir.get_member %inner[0] {name = "x"} {test.ptr = "i0"}
         : !cir.ptr<!rec_Inner> -> !cir.ptr<!s32i>
-  %i1 = cir.get_member %inner[1] {name = "y", test.ptr = "i1"}
+  %i1 = cir.get_member %inner[1] {name = "y"} {test.ptr = "i1"}
         : !cir.ptr<!rec_Inner> -> !cir.ptr<!s32i>
-  %z = cir.get_member %o[1] {name = "z", test.ptr = "z"}
+  %z = cir.get_member %o[1] {name = "z"} {test.ptr = "z"}
        : !cir.ptr<!rec_Outer> -> !cir.ptr<!s32i>
   cir.return
 }
@@ -220,9 +220,9 @@ cir.func @get_member_nested_records() {
 !rec_U = !cir.union<"U" {data !s32i, data !u8i}>
 cir.func @get_member_union() {
   %u = cir.alloca "u" align(4) : !cir.ptr<!rec_U> {test.ptr = "u"}
-  %m_int = cir.get_member %u[0] {name = "i", test.ptr = "m_int"}
+  %m_int = cir.get_member %u[0] {name = "i"} {test.ptr = "m_int"}
            : !cir.ptr<!rec_U> -> !cir.ptr<!s32i>
-  %m_char = cir.get_member %u[1] {name = "c", test.ptr = "m_char"}
+  %m_char = cir.get_member %u[1] {name = "c"} {test.ptr = "m_char"}
             : !cir.ptr<!rec_U> -> !cir.ptr<!u8i>
   cir.return
 }
@@ -287,9 +287,9 @@ cir.func @get_element_of_records() {
         : !cir.ptr<!cir.array<!rec_P x 2>> -> !cir.ptr<!rec_P>
   %e1 = cir.get_element %arr[%one : !s32i] {test.ptr = "e1"}
         : !cir.ptr<!cir.array<!rec_P x 2>> -> !cir.ptr<!rec_P>
-  %e0_y = cir.get_member %e0[1] {name = "y", test.ptr = "e0_y"}
+  %e0_y = cir.get_member %e0[1] {name = "y"} {test.ptr = "e0_y"}
           : !cir.ptr<!rec_P> -> !cir.ptr<!s32i>
-  %e1_y = cir.get_member %e1[1] {name = "y", test.ptr = "e1_y"}
+  %e1_y = cir.get_member %e1[1] {name = "y"} {test.ptr = "e1_y"}
           : !cir.ptr<!rec_P> -> !cir.ptr<!s32i>
   cir.return
 }
@@ -342,9 +342,9 @@ cir.func @base_and_derived_class_addr(%d: 
!cir.ptr<!rec_Derived>)
              -> !cir.ptr<!rec_Base> {test.ptr = "base"}
   %derived = cir.derived_class_addr %base : !cir.ptr<!rec_Base> nonnull [4]
              -> !cir.ptr<!rec_Derived> {test.ptr = "derived"}
-  %first = cir.get_member %d[0] {name = "x", test.ptr = "first"}
+  %first = cir.get_member %d[0] {name = "x"} {test.ptr = "first"}
            : !cir.ptr<!rec_Derived> -> !cir.ptr<!s32i>
-  %basedata = cir.get_member %base[0] {name = "b", test.ptr = "basedata"}
+  %basedata = cir.get_member %base[0] {name = "b"} {test.ptr = "basedata"}
               : !cir.ptr<!rec_Base> -> !cir.ptr<!u8i>
   cir.return
 }
@@ -373,9 +373,9 @@ cir.func @base_and_derived_class_maybe_null(%d: 
!cir.ptr<!rec_Derived>)
              -> !cir.ptr<!rec_Base> {test.ptr = "base"}
   %derived = cir.derived_class_addr %base : !cir.ptr<!rec_Base> [4]
              -> !cir.ptr<!rec_Derived> {test.ptr = "derived"}
-  %first = cir.get_member %d[0] {name = "x", test.ptr = "first"}
+  %first = cir.get_member %d[0] {name = "x"} {test.ptr = "first"}
            : !cir.ptr<!rec_Derived> -> !cir.ptr<!s32i>
-  %basedata = cir.get_member %base[0] {name = "b", test.ptr = "basedata"}
+  %basedata = cir.get_member %base[0] {name = "b"} {test.ptr = "basedata"}
               : !cir.ptr<!rec_Base> -> !cir.ptr<!u8i>
   cir.return
 }
@@ -431,9 +431,9 @@ cir.func @complex_parts_distinct_allocas() {
 !rec_S = !cir.struct<"S" {data !s32i, data !s32i}>
 cir.func @unknown_access_size() {
   %s = cir.alloca "s" align(4) : !cir.ptr<!rec_S> {test.ptr = "s"}
-  %m0 = cir.get_member %s[0] {name = "x", test.ptr = "m0"}
+  %m0 = cir.get_member %s[0] {name = "x"} {test.ptr = "m0"}
         : !cir.ptr<!rec_S> -> !cir.ptr<!s32i>
-  %m1 = cir.get_member %s[1] {name = "y", test.ptr = "m1"}
+  %m1 = cir.get_member %s[1] {name = "y"} {test.ptr = "m1"}
         : !cir.ptr<!rec_S> -> !cir.ptr<!s32i>
   %vp = cir.cast bitcast %m1 : !cir.ptr<!s32i> -> !cir.ptr<!cir.void>
           {test.ptr = "vp"}
@@ -451,9 +451,9 @@ cir.func @unknown_access_size() {
 !rec_S = !cir.struct<"S" {data !s32i, data !s32i}>
 cir.func @offsets_from_pointer_argument(%s: !cir.ptr<!rec_S>)
     attributes {test.ptr = "func"} {
-  %px = cir.get_member %s[0] {name = "x", test.ptr = "px"}
+  %px = cir.get_member %s[0] {name = "x"} {test.ptr = "px"}
         : !cir.ptr<!rec_S> -> !cir.ptr<!s32i>
-  %py = cir.get_member %s[1] {name = "y", test.ptr = "py"}
+  %py = cir.get_member %s[1] {name = "y"} {test.ptr = "py"}
         : !cir.ptr<!rec_S> -> !cir.ptr<!s32i>
   cir.return
 }
@@ -482,9 +482,9 @@ cir.func @offsets_from_pointer_argument(%s: 
!cir.ptr<!rec_S>)
 !rec_S = !cir.struct<"S" {data !cir.int<s, 19, bitint>, data !cir.int<s, 19, 
bitint>}>
 cir.func @bitint_struct_elements(%s: !cir.ptr<!rec_S>)
     attributes {test.ptr = "func"} {
-  %px = cir.get_member %s[0] {name = "x", test.ptr = "px"}
+  %px = cir.get_member %s[0] {name = "x"} {test.ptr = "px"}
         : !cir.ptr<!rec_S> -> !cir.ptr<!cir.int<s, 19, bitint>>
-  %py = cir.get_member %s[1] {name = "y", test.ptr = "py"}
+  %py = cir.get_member %s[1] {name = "y"} {test.ptr = "py"}
         : !cir.ptr<!rec_S> -> !cir.ptr<!cir.int<s, 19, bitint>>
   %one  = cir.const #cir.int<1> : !s32i
   %px_plus_one = cir.ptr_stride %px, %one : (!cir.ptr<!cir.int<s, 19, 
bitint>>, !s32i)
diff --git a/clang/test/CIR/CodeGen/aapcs-volatile-bitfields.c 
b/clang/test/CIR/CodeGen/aapcs-volatile-bitfields.c
index 2fb6856d4f6b0..3f8f991921a97 100644
--- a/clang/test/CIR/CodeGen/aapcs-volatile-bitfields.c
+++ b/clang/test/CIR/CodeGen/aapcs-volatile-bitfields.c
@@ -85,7 +85,7 @@ int check_load(st1 *s1) {
 // CIR:  cir.func {{.*}} @check_load
 // CIR:    [[LOAD:%.*]] = cir.load align(8) {{.*}} : 
!cir.ptr<!cir.ptr<!rec_st1>>, !cir.ptr<!rec_st1>
 // CIR:    [[MEMBER:%.*]] = cir.get_member [[LOAD]][0] {name = "b"} : 
!cir.ptr<!rec_st1> -> !cir.ptr<!u16i>
-// CIR:    [[BITFI:%.*]] = cir.get_bitfield align(4) (#bfi_b, [[MEMBER]] 
{is_volatile} : !cir.ptr<!u16i>) -> !u32i
+// CIR:    [[BITFI:%.*]] = cir.get_bitfield align(4) volatile(#bfi_b, 
[[MEMBER]] : !cir.ptr<!u16i>) -> !u32i
 // CIR:    [[CAST:%.*]] = cir.cast integral [[BITFI]] : !u32i -> !s32i
 // CIR:    cir.store [[CAST]], [[RETVAL:%.*]] : !s32i, !cir.ptr<!s32i>
 // CIR:    [[RET:%.*]] = cir.load [[RETVAL]] : !cir.ptr<!s32i>, !s32i
@@ -120,7 +120,7 @@ int check_load_exception(st3 *s3) {
 // CIR:  cir.func {{.*}} @check_load_exception
 // CIR:    [[LOAD:%.*]] = cir.load align(8) {{.*}} : 
!cir.ptr<!cir.ptr<!rec_st3>>, !cir.ptr<!rec_st3>
 // CIR:    [[MEMBER:%.*]] = cir.get_member [[LOAD]][3] {name = "b"} : 
!cir.ptr<!rec_st3> -> !cir.ptr<!u8i>
-// CIR:    [[BITFI:%.*]] = cir.get_bitfield align(4) (#bfi_b1, [[MEMBER]] 
{is_volatile} : !cir.ptr<!u8i>) -> !u32i
+// CIR:    [[BITFI:%.*]] = cir.get_bitfield align(4) volatile(#bfi_b1, 
[[MEMBER]] : !cir.ptr<!u8i>) -> !u32i
 // CIR:    [[CAST:%.*]] = cir.cast integral [[BITFI]] : !u32i -> !s32i
 // CIR:    cir.store [[CAST]], [[RETVAL:%.*]] : !s32i, !cir.ptr<!s32i>
 // CIR:    [[RET:%.*]] = cir.load [[RETVAL]] : !cir.ptr<!s32i>, !s32i
@@ -157,7 +157,7 @@ int clip_load_exception2(clip *c) {
 // CIR:  cir.func {{.*}} @clip_load_exception2
 // CIR:    [[LOAD:%.*]] = cir.load align(8) {{.*}} : 
!cir.ptr<!cir.ptr<!rec_clip>>, !cir.ptr<!rec_clip>
 // CIR:    [[MEMBER:%.*]] = cir.get_member [[LOAD]][0] {name = "a"} : 
!cir.ptr<!rec_clip> -> !cir.ptr<!cir.array<!u8i x 3>>
-// CIR:    [[BITFI:%.*]] = cir.get_bitfield align(4) (#bfi_a1, [[MEMBER]] 
{is_volatile} : !cir.ptr<!cir.array<!u8i x 3>>) -> !s32i
+// CIR:    [[BITFI:%.*]] = cir.get_bitfield align(4) volatile(#bfi_a1, 
[[MEMBER]] : !cir.ptr<!cir.array<!u8i x 3>>) -> !s32i
 // CIR:    cir.store [[BITFI]], [[RETVAL:%.*]] : !s32i, !cir.ptr<!s32i>
 // CIR:    [[RET:%.*]] = cir.load [[RETVAL]] : !cir.ptr<!s32i>, !s32i
 // CIR:    cir.return [[RET]] : !s32i
@@ -185,7 +185,7 @@ void check_store(st2 *s2) {
 // CIR:    [[CONST:%.*]] = cir.const #cir.int<1> : !s16i
 // CIR:    [[LOAD:%.*]] = cir.load align(8) {{.*}} : 
!cir.ptr<!cir.ptr<!rec_st2>>, !cir.ptr<!rec_st2>
 // CIR:    [[MEMBER:%.*]] = cir.get_member [[LOAD]][0] {name = "a"} : 
!cir.ptr<!rec_st2> -> !cir.ptr<!u32i>
-// CIR:    [[SETBF:%.*]] = cir.set_bitfield align(8) (#bfi_a, [[MEMBER]] : 
!cir.ptr<!u32i>, [[CONST]] : !s16i) {is_volatile} -> !s16i
+// CIR:    [[SETBF:%.*]] = cir.set_bitfield align(8) volatile(#bfi_a, 
[[MEMBER]] : !cir.ptr<!u32i>, [[CONST]] : !s16i) -> !s16i
 // CIR:    cir.return
 
 // LLVM:define dso_local void @check_store
@@ -215,7 +215,7 @@ void check_store_exception(st3 *s3) {
 // CIR:    [[CONST:%.*]] = cir.const #cir.int<2> : !u32i
 // CIR:    [[LOAD:%.*]] = cir.load align(8) {{.*}} : 
!cir.ptr<!cir.ptr<!rec_st3>>, !cir.ptr<!rec_st3>
 // CIR:    [[MEMBER:%.*]] = cir.get_member [[LOAD]][3] {name = "b"} : 
!cir.ptr<!rec_st3> -> !cir.ptr<!u8i>
-// CIR:    [[SETBF:%.*]] = cir.set_bitfield align(4) (#bfi_b1, [[MEMBER]] : 
!cir.ptr<!u8i>, [[CONST]] : !u32i) {is_volatile} -> !u32i
+// CIR:    [[SETBF:%.*]] = cir.set_bitfield align(4) volatile(#bfi_b1, 
[[MEMBER]] : !cir.ptr<!u8i>, [[CONST]] : !u32i) -> !u32i
 // CIR:    cir.return
 
 // LLVM:define dso_local void @check_store_exception
@@ -244,7 +244,7 @@ void clip_store_exception2(clip *c) {
 // CIR:    [[CONST:%.*]] = cir.const #cir.int<3> : !s32i
 // CIR:    [[LOAD:%.*]] = cir.load align(8) {{.*}} : 
!cir.ptr<!cir.ptr<!rec_clip>>, !cir.ptr<!rec_clip>
 // CIR:    [[MEMBER:%.*]] = cir.get_member [[LOAD]][0] {name = "a"} : 
!cir.ptr<!rec_clip> -> !cir.ptr<!cir.array<!u8i x 3>>
-// CIR:    [[SETBF:%.*]] = cir.set_bitfield align(4) (#bfi_a1, [[MEMBER]] : 
!cir.ptr<!cir.array<!u8i x 3>>, [[CONST]] : !s32i) {is_volatile} -> !s32i
+// CIR:    [[SETBF:%.*]] = cir.set_bitfield align(4) volatile(#bfi_a1, 
[[MEMBER]] : !cir.ptr<!cir.array<!u8i x 3>>, [[CONST]] : !s32i) -> !s32i
 // CIR:    cir.return
 
 // LLVM:define dso_local void @clip_store_exception2
@@ -266,7 +266,7 @@ void check_store_second_member (st4 *s4) {
 // CIR:    [[ONE:%.*]] = cir.const #cir.int<1> : !u64i
 // CIR:    [[LOAD:%.*]] = cir.load align(8) {{.*}} : 
!cir.ptr<!cir.ptr<!rec_st4>>, !cir.ptr<!rec_st4>
 // CIR:    [[MEMBER:%.*]] = cir.get_member [[LOAD]][2] {name = "b"} : 
!cir.ptr<!rec_st4> -> !cir.ptr<!u16i>
-// CIR:    cir.set_bitfield align(8) (#bfi_b2, [[MEMBER]] : !cir.ptr<!u16i>, 
[[ONE]] : !u64i) {is_volatile} -> !u64i
+// CIR:    cir.set_bitfield align(8) volatile(#bfi_b2, [[MEMBER]] : 
!cir.ptr<!u16i>, [[ONE]] : !u64i) -> !u64i
 
 // LLVM: define dso_local void @check_store_second_member
 // LLVM:   [[LOAD:%.*]] = load ptr, ptr {{.*}}, align 8
diff --git a/clang/test/CIR/CodeGen/alignment.c 
b/clang/test/CIR/CodeGen/alignment.c
index 25acb6a0f570d..c4f25315f441a 100644
--- a/clang/test/CIR/CodeGen/alignment.c
+++ b/clang/test/CIR/CodeGen/alignment.c
@@ -8,8 +8,8 @@
 __attribute((aligned(32))) float a[128];
 union {int a[4]; __attribute((aligned(32))) float b[4];} b;
 
-// CIR: @a = #cir.zero {{.*}}alignment = 32
-// CIR: @b = #cir.zero{{.*}}alignment = 32
+// CIR: @a = #cir.zero {{.*}}align(32)
+// CIR: @b = #cir.zero{{.*}}align(32)
 
 // LLVM: @a = {{.*}}zeroinitializer, align 32
 // LLVM: @b = {{.*}}zeroinitializer, align 32
@@ -18,7 +18,7 @@ union {int a[4]; __attribute((aligned(32))) float b[4];} b;
 // OGCG: @b = {{.*}}zeroinitializer, align 32
 
 long long int test5[1024];
-// CIR: @test5 = #cir.zero {{.*}}alignment = 16
+// CIR: @test5 = #cir.zero {{.*}}align(16)
 // LLVM: @test5 = {{.*}}global [1024 x i64] zeroinitializer, align 16
 // OGCG: @test5 = {{.*}}global [1024 x i64] zeroinitializer, align 16
 
diff --git a/clang/test/CIR/CodeGen/atomic.c b/clang/test/CIR/CodeGen/atomic.c
index 28fe01e83ed65..d2fb28116e7bd 100644
--- a/clang/test/CIR/CodeGen/atomic.c
+++ b/clang/test/CIR/CodeGen/atomic.c
@@ -13,8 +13,8 @@ struct S1 {
 
 _Atomic int g1;
 _Atomic int g2 = 42;
-// CIR: cir.global external @g2 = #cir.int<42> : !s32i {alignment = 4 : i64}
-// CIR: cir.global external @g1 = #cir.int<0> : !s32i {alignment = 4 : i64}
+// CIR: cir.global external @g2 = #cir.int<42> : !s32i align(4)
+// CIR: cir.global external @g1 = #cir.int<0> : !s32i align(4)
 
 // LLVM: @g2 = global i32 42, align 4
 // LLVM: @g1 = global i32 0, align 4
@@ -950,7 +950,7 @@ void test_and_set(void *p) {
   __atomic_test_and_set(p, __ATOMIC_SEQ_CST);
   // CIR:      %[[VOID_PTR:.+]] = cir.load align(8) %{{.+}} : 
!cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>
   // CIR-NEXT: %[[PTR:.+]] = cir...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/226600
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to