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
