[clang] 8af4ce8 - Make CIR assembly formats strict properties compatible (#226600)

via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 28 05:48:40 PDT 2026


Author: Mehdi Amini
Date: 2026-09-28T12:48:26Z
New Revision: 8af4ce85a25634994ebd19223dac15213b1a7dbc

URL: https://github.com/llvm/llvm-project/commit/8af4ce85a25634994ebd19223dac15213b1a7dbc
DIFF: https://github.com/llvm/llvm-project/commit/8af4ce85a25634994ebd19223dac15213b1a7dbc.diff

LOG: Make CIR assembly formats strict properties compatible (#226600)

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

Assisted-by: Codex

Added: 
    

Modified: 
    clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
    clang/include/clang/CIR/Dialect/IR/CIRDialect.td
    clang/include/clang/CIR/Dialect/IR/CIROps.td
    clang/lib/CIR/CodeGen/CIRGenExprCXX.cpp
    clang/lib/CIR/Dialect/Transforms/CXXABILowering.cpp
    clang/test/CIR/Analysis/alias-analysis-modref.cir
    clang/test/CIR/Analysis/alias-analysis-underlying-object.cir
    clang/test/CIR/CodeGen/alignment.c
    clang/test/CIR/CodeGen/atomic.c
    clang/test/CIR/CodeGen/bitint-memory.c
    clang/test/CIR/CodeGen/bitint-record-layout.c
    clang/test/CIR/CodeGen/bitint-wide-be.c
    clang/test/CIR/CodeGen/bitint-wide.c
    clang/test/CIR/CodeGen/bitint.c
    clang/test/CIR/CodeGen/builtin-call.cpp
    clang/test/CIR/CodeGen/compound_literal.c
    clang/test/CIR/CodeGen/delete-array-aligned.cpp
    clang/test/CIR/CodeGen/delete-array-overaligned-cookie.cpp
    clang/test/CIR/CodeGen/delete-array-throwing-dtor.cpp
    clang/test/CIR/CodeGen/delete-array-unsized-dtor.cpp
    clang/test/CIR/CodeGen/delete-array.cpp
    clang/test/CIR/CodeGen/empty-union.cpp
    clang/test/CIR/CodeGen/fixed-point-literal.c
    clang/test/CIR/CodeGen/fp-contract.c
    clang/test/CIR/CodeGen/global-const-alignment.cpp
    clang/test/CIR/CodeGen/global-init-fenv.cpp
    clang/test/CIR/CodeGen/global-section.c
    clang/test/CIR/CodeGen/global-tls-dyn-init.cpp
    clang/test/CIR/CodeGen/globals.cpp
    clang/test/CIR/CodeGen/lambda.cpp
    clang/test/CIR/CodeGen/local-const-aggregate-name-clash.cpp
    clang/test/CIR/CodeGen/no-odr-use.cpp
    clang/test/CIR/CodeGen/non-odr-use-non-ref.cpp
    clang/test/CIR/CodeGen/nonzeroinit-struct.cpp
    clang/test/CIR/CodeGen/paren-list-agg-init.cpp
    clang/test/CIR/CodeGen/pointer-to-data-member-indirect-field.cpp
    clang/test/CIR/CodeGen/pointer-width-32bit.cpp
    clang/test/CIR/CodeGen/pragma-fenv_access.c
    clang/test/CIR/CodeGen/predefined-expr.c
    clang/test/CIR/CodeGen/source-loc.cpp
    clang/test/CIR/CodeGen/static-local-in-ctor.cpp
    clang/test/CIR/CodeGen/static-local-info.cpp
    clang/test/CIR/CodeGen/tls-model.cpp
    clang/test/CIR/CodeGen/union-agg-init.c
    clang/test/CIR/CodeGen/vbase.cpp
    clang/test/CIR/CodeGen/vector-strict-fp.cpp
    clang/test/CIR/CodeGen/vtt.cpp
    clang/test/CIR/CodeGenCUDA/address-spaces.cu
    clang/test/CIR/CodeGenCUDA/device-stub.cu
    clang/test/CIR/CodeGenCUDA/kernel-call.cu
    clang/test/CIR/CodeGenCXX/global-refs.cpp
    clang/test/CIR/CodeGenCXX/init-priority-attr.cpp
    clang/test/CIR/CodeGenCXX/vtable-linkage.cpp
    clang/test/CIR/CodeGenCXX/zero_init_bases.cpp
    clang/test/CIR/IR/attribute-visibility.cir
    clang/test/CIR/IR/fenv.cir
    clang/test/CIR/IR/global.cir
    clang/test/CIR/IR/invalid-cast.cir
    clang/test/CIR/IR/invalid-cmp.cir
    clang/test/CIR/IR/invalid-delete-array.cir
    clang/test/CIR/IR/invalid-static-local-info.cir
    clang/test/CIR/IR/invalid-static-local.cir
    clang/test/CIR/IR/invalid-tls.cir
    clang/test/CIR/IR/invalid-vtable.cir
    clang/test/CIR/IR/static-local-info.cir
    clang/test/CIR/IR/static-local.cir
    clang/test/CIR/IR/string-trailing-zeros.cir
    clang/test/CIR/IR/var-registration.cir
    clang/test/CIR/IR/vtable-addrpt.cir
    clang/test/CIR/IR/vtable-attr.cir
    clang/test/CIR/IR/vtt-addrpoint.cir
    clang/test/CIR/Lowering/call-llvm-intrinsic.cir
    clang/test/CIR/Lowering/fenv.cir
    clang/test/CIR/Lowering/vtt-addrpoint.cir
    clang/test/CIR/Transforms/vector-cmp-fold.cir
    clang/unittests/CIR/FenvOpTest.cpp

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
index 04dc8bb178cb8..358412b75fc05 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
@@ -2354,8 +2354,8 @@ def CIR_StaticLocalInfoAttr
     Example:
     ```
     cir.global ... @x = ...
-      {static_local_info = #cir.static_local_info<
-         local = true, tls = none, is_inline = false, tsk = undeclared>}
+      static_local_info<local = true, tls = none, is_inline = false,
+                        tsk = undeclared>
     ```
 
     Because it stores plain data rather than a `clang::VarDecl` pointer, it

diff  --git a/clang/include/clang/CIR/Dialect/IR/CIRDialect.td b/clang/include/clang/CIR/Dialect/IR/CIRDialect.td
index 96ea50b8badd1..93d020251f2a8 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIRDialect.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIRDialect.td
@@ -17,7 +17,7 @@ include "mlir/IR/OpBase.td"
 
 def CIR_Dialect : Dialect {
   let name = "cir";
-  let useStrictPropertiesInAssemblyFormat = 0;
+  let useStrictPropertiesInAssemblyFormat = 1;
 
   // A short one-line summary of our dialect.
   let summary = "A high-level dialect for analyzing and optimizing Clang "

diff  --git a/clang/include/clang/CIR/Dialect/IR/CIROps.td b/clang/include/clang/CIR/Dialect/IR/CIROps.td
index 4996037ea5f56..de805d4c642a2 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIROps.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIROps.td
@@ -316,9 +316,7 @@ def CIR_CastOp : CIR_Op<"cast", !listconcat([
     ...
     %x = cir.cast array_to_ptrdecay %0 
        : !cir.ptr<!cir.array<i32 x 10>> -> !cir.ptr<i32>
-    %y = cir.cast floating %f : !cir.double -> !cir.float {
-      fenv = #cir.fenv<>
-    }
+    %y = cir.cast floating %f : !cir.double -> !cir.float fenv<>
     ```
   }];
 
@@ -327,7 +325,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 = [
@@ -2618,7 +2617,7 @@ def CIR_CmpOp : CIR_Op<"cmp",
     ```
     %0 = cir.cmp gt %1, %2 : !s32i
     %1 = cir.cmp eq %a, %b : !cir.ptr<!u8i>
-    %2 = cir.cmp lt %x, %y : !cir.float {fenv = #cir.fenv<>}
+    %2 = cir.cmp lt %x, %y : !cir.float fenv<>
     ```
   }];
 
@@ -2632,7 +2631,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 +2947,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 +3478,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,8 +3880,9 @@ def CIR_SetBitfieldOp : CIR_Op<"set_bitfield"> {
 
   let assemblyFormat = [{
     (`align` `(` $alignment^ `)`)?
-    `(`$bitfield_info`,` $addr`:`qualified(type($addr))`,`
-    $src`:`type($src) `)`  attr-dict `->` type($result) }];
+    ` ` `(`$bitfield_info`,` $addr`:`qualified(type($addr))`,`
+    $src`:`type($src) `)`
+    (`{` `is_volatile` $is_volatile^ `}`)? attr-dict `->` type($result) }];
 
   let builders = [
     OpBuilder<(ins "mlir::Type":$type,
@@ -3959,7 +3969,8 @@ def CIR_GetBitfieldOp : CIR_Op<"get_bitfield"> {
 
   let assemblyFormat = [{
     (`align` `(` $alignment^ `)`)?
-    `(`$bitfield_info `,` $addr attr-dict `:`
+    ` ` `(`$bitfield_info `,` $addr
+    (` ` `{` `is_volatile` $is_volatile^ `}`)? attr-dict `:`
     qualified(type($addr)) `)` `->` type($result) }];
 
   let builders = [
@@ -4016,7 +4027,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 +4538,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 = [
@@ -4555,8 +4567,8 @@ def CIR_DeleteArrayOp : CIR_Op<"delete_array"> {
     will be translated to `cir.delete_array %ptr`.
 
     The `delete_fn` attribute specifies the operator delete function to call.
-    The `delete_params` attribute describes the parameters needed by the
-    operator delete call.
+    The optional `delete_params` attribute describes the parameters needed by
+    the operator delete call. When absent, all parameters have default values.
 
     The `element_dtor` attribute, when present, specifies the destructor to call
     on each array element before deallocation.
@@ -4572,7 +4584,7 @@ def CIR_DeleteArrayOp : CIR_Op<"delete_array"> {
   let arguments = (ins
     CIR_PointerType:$address,
     FlatSymbolRefAttr:$delete_fn,
-    CIR_UsualDeleteParamsAttr:$delete_params,
+    OptionalAttr<CIR_UsualDeleteParamsAttr>:$delete_params,
     OptionalAttr<FlatSymbolRefAttr>:$element_dtor,
     UnitProp:$dtor_may_throw,
     I64Attr:$element_align
@@ -4591,7 +4603,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
   }];
 
@@ -6084,9 +6101,7 @@ def CIR_VecCmpOp : CIR_Op<"vec.cmp",
     ```
     %eq = cir.vec.cmp(eq, %vec_a, %vec_b) : !cir.vector<4 x !s32i>, !cir.vector<4 x !s32i>
     %lt = cir.vec.cmp(lt, %vec_a, %vec_b) : !cir.vector<4 x !s32i>, !cir.vector<4 x !s32i>
-    %gt = cir.vec.cmp(gt, %va, %vb) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> {
-      fenv = #cir.fenv<>
-    }
+    %gt = cir.vec.cmp(gt, %va, %vb) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> fenv<>
     ```
   }];
 
@@ -6101,7 +6116,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 +7466,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 +7794,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 +7861,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 +8013,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 +9441,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 +9471,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/lib/CIR/CodeGen/CIRGenExprCXX.cpp b/clang/lib/CIR/CodeGen/CIRGenExprCXX.cpp
index 57c61c2f47ed2..f8c2a5cce47e4 100644
--- a/clang/lib/CIR/CodeGen/CIRGenExprCXX.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenExprCXX.cpp
@@ -1532,9 +1532,12 @@ void CIRGenFunction::emitCXXDeleteExpr(const CXXDeleteExpr *e) {
           ptr.getAlignment().alignmentOfArrayElement(elementSize).getQuantity();
     }
 
-    auto deleteParams = cir::UsualDeleteParamsAttr::get(
-        builder.getContext(), udp.Size, align,
-        isTypeAwareAllocation(udp.TypeAwareDelete), udp.DestroyingDelete);
+    cir::UsualDeleteParamsAttr deleteParams;
+    if (udp.Size || align || isTypeAwareAllocation(udp.TypeAwareDelete) ||
+        udp.DestroyingDelete)
+      deleteParams = cir::UsualDeleteParamsAttr::get(
+          builder.getContext(), udp.Size, align,
+          isTypeAwareAllocation(udp.TypeAwareDelete), udp.DestroyingDelete);
 
     // Alignment of the element, used for the 'cookie' later.
     uint64_t elementAlign = cgm.getASTContext()

diff  --git a/clang/lib/CIR/Dialect/Transforms/CXXABILowering.cpp b/clang/lib/CIR/Dialect/Transforms/CXXABILowering.cpp
index 5062b4f231fbb..9a0e40bd4f506 100644
--- a/clang/lib/CIR/Dialect/Transforms/CXXABILowering.cpp
+++ b/clang/lib/CIR/Dialect/Transforms/CXXABILowering.cpp
@@ -647,7 +647,10 @@ mlir::LogicalResult CIRDeleteArrayOpABILowering::matchAndRewrite(
   mlir::Location loc = op->getLoc();
   mlir::Value loweredAddress = adaptor.getAddress();
 
-  cir::UsualDeleteParamsAttr deleteParams = op.getDeleteParams();
+  cir::UsualDeleteParamsAttr deleteParams = op.getDeleteParamsAttr();
+  if (!deleteParams)
+    deleteParams = cir::UsualDeleteParamsAttr::get(op.getContext(), false,
+                                                   std::nullopt, false, false);
   bool cookieRequired = deleteParams.getSize() || op.getElementDtorAttr();
 
   assert(!deleteParams.getDestroyingDelete() &&

diff  --git a/clang/test/CIR/Analysis/alias-analysis-modref.cir b/clang/test/CIR/Analysis/alias-analysis-modref.cir
index d02a6f06bfc3e..781d3bd3baa60 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<> {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/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.cast bitcast %[[VOID_PTR]] : !cir.ptr<!void> -> !cir.ptr<!s8i>
-  // CIR:      %[[RES:.+]] = cir.atomic.test_and_set seq_cst %[[PTR]] : !cir.ptr<!s8i> -> !cir.bool
+  // CIR:      %[[RES:.+]] = cir.atomic.test_and_set seq_cst %[[PTR]] align(1) : !cir.ptr<!s8i> -> !cir.bool
   // CIR-NEXT: cir.store align(1) %[[RES]], %{{.+}} : !cir.bool, !cir.ptr<!cir.bool>
 
   // LLVM:      %[[PTR:.+]] = load ptr, ptr %{{.+}}, align 8
@@ -970,7 +970,7 @@ void test_and_set_volatile(volatile 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.cast bitcast %[[VOID_PTR]] : !cir.ptr<!void> -> !cir.ptr<!s8i>
-  // CIR:      %[[RES:.+]] = cir.atomic.test_and_set seq_cst %[[PTR]] volatile : !cir.ptr<!s8i> -> !cir.bool
+  // CIR:      %[[RES:.+]] = cir.atomic.test_and_set seq_cst %[[PTR]] align(1) volatile : !cir.ptr<!s8i> -> !cir.bool
   // CIR-NEXT: cir.store align(1) %[[RES]], %{{.+}} : !cir.bool, !cir.ptr<!cir.bool>
 
   // LLVM:      %[[PTR:.+]] = load ptr, ptr %{{.+}}, align 8
@@ -990,7 +990,7 @@ void clear(void *p) {
   __atomic_clear(p, __ATOMIC_SEQ_CST);
   // CIR:      %[[VOID_PTR:.+]] = cir.load align(8) %{{.+}} : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>
   // CIR-NEXT: %[[PTR:.+]] = cir.cast bitcast %[[VOID_PTR]] : !cir.ptr<!void> -> !cir.ptr<!s8i>
-  // CIR:      cir.atomic.clear seq_cst %[[PTR]] : !cir.ptr<!s8i>
+  // CIR:      cir.atomic.clear seq_cst %[[PTR]] align(1) : !cir.ptr<!s8i>
 
   // LLVM: store atomic i8 0, ptr %{{.+}} seq_cst, align 1
 
@@ -1005,7 +1005,7 @@ void clear_volatile(volatile void *p) {
   __atomic_clear(p, __ATOMIC_SEQ_CST);
   // CIR:      %[[VOID_PTR:.+]] = cir.load align(8) %{{.+}} : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>
   // CIR-NEXT: %[[PTR:.+]] = cir.cast bitcast %[[VOID_PTR]] : !cir.ptr<!void> -> !cir.ptr<!s8i>
-  // CIR:      cir.atomic.clear seq_cst %[[PTR]] volatile : !cir.ptr<!s8i>
+  // CIR:      cir.atomic.clear seq_cst %[[PTR]] align(1) volatile : !cir.ptr<!s8i>
 
   // LLVM: store atomic volatile i8 0, ptr %{{.+}} seq_cst, align 1
 

diff  --git a/clang/test/CIR/CodeGen/bitint-memory.c b/clang/test/CIR/CodeGen/bitint-memory.c
index ba71546e61160..c7db791184037 100644
--- a/clang/test/CIR/CodeGen/bitint-memory.c
+++ b/clang/test/CIR/CodeGen/bitint-memory.c
@@ -14,14 +14,14 @@ signed _BitInt(17) s17_neg1 = -1;
 unsigned _BitInt(17) u17_100 = 100;
 signed _BitInt(128) s128 = 1234;
 
-// CIR-DAG: cir.global external @s6_neg1 = #cir.int<-1> : !cir.int<s, 6, bitint> {alignment = 1 : i64}
-// CIR-DAG: cir.global external @u6_63 = #cir.int<63> : !cir.int<u, 6, bitint> {alignment = 1 : i64}
-// CIR-DAG: cir.global external @s6_neg2 = #cir.int<-2> : !cir.int<s, 6, bitint> {alignment = 1 : i64}
-// CIR-DAG: cir.global external @s2_neg1 = #cir.int<-1> : !cir.int<s, 2, bitint> {alignment = 1 : i64}
-// CIR-DAG: cir.global external @u4_15 = #cir.int<15> : !cir.int<u, 4, bitint> {alignment = 1 : i64}
-// CIR-DAG: cir.global external @s17_neg1 = #cir.int<-1> : !cir.int<s, 17, bitint> {alignment = 4 : i64}
-// CIR-DAG: cir.global external @u17_100 = #cir.int<100> : !cir.int<u, 17, bitint> {alignment = 4 : i64}
-// CIR-DAG: cir.global external @s128 = #cir.int<1234> : !s128i_bitint {alignment = 8 : i64}
+// CIR-DAG: cir.global external @s6_neg1 = #cir.int<-1> : !cir.int<s, 6, bitint> align(1)
+// CIR-DAG: cir.global external @u6_63 = #cir.int<63> : !cir.int<u, 6, bitint> align(1)
+// CIR-DAG: cir.global external @s6_neg2 = #cir.int<-2> : !cir.int<s, 6, bitint> align(1)
+// CIR-DAG: cir.global external @s2_neg1 = #cir.int<-1> : !cir.int<s, 2, bitint> align(1)
+// CIR-DAG: cir.global external @u4_15 = #cir.int<15> : !cir.int<u, 4, bitint> align(1)
+// CIR-DAG: cir.global external @s17_neg1 = #cir.int<-1> : !cir.int<s, 17, bitint> align(4)
+// CIR-DAG: cir.global external @u17_100 = #cir.int<100> : !cir.int<u, 17, bitint> align(4)
+// CIR-DAG: cir.global external @s128 = #cir.int<1234> : !s128i_bitint align(8)
 
 // A signed _BitInt is sign-extended across its padded storage integer; an
 // unsigned one is zero-extended.  Storage width is the ABI size (i6 -> i8,
@@ -38,12 +38,12 @@ signed _BitInt(128) s128 = 1234;
 struct S { _BitInt(17) m; };
 struct S gs = {-1};
 
-// CIR-DAG: cir.global external @gs = #cir.const_record<{#cir.int<-1> : !cir.int<s, 17, bitint>}> : !rec_S {alignment = 4 : i64}
+// CIR-DAG: cir.global external @gs = #cir.const_record<{#cir.int<-1> : !cir.int<s, 17, bitint>}> : !rec_S align(4)
 // LLVM-DAG: @gs = global %struct.S { i32 -1 }, align 4
 
 signed _BitInt(17) garr[3] = {-1, 2, -3};
 
-// CIR-DAG: cir.global external @garr = #cir.const_array<[#cir.int<-1> : !cir.int<s, 17, bitint>, #cir.int<2> : !cir.int<s, 17, bitint>, #cir.int<-3> : !cir.int<s, 17, bitint>]> : !cir.array<!cir.int<s, 17, bitint> x 3> {alignment = 4 : i64}
+// CIR-DAG: cir.global external @garr = #cir.const_array<[#cir.int<-1> : !cir.int<s, 17, bitint>, #cir.int<2> : !cir.int<s, 17, bitint>, #cir.int<-3> : !cir.int<s, 17, bitint>]> : !cir.array<!cir.int<s, 17, bitint> x 3> align(4)
 // LLVM-DAG: @garr = global [3 x i32] [i32 -1, i32 2, i32 -3], align 4
 
 void store_load(signed _BitInt(17) *p, signed _BitInt(17) v) { *p = v; }

diff  --git a/clang/test/CIR/CodeGen/bitint-record-layout.c b/clang/test/CIR/CodeGen/bitint-record-layout.c
index 41c5f4b8ee8db..a9a9b7a21b55b 100644
--- a/clang/test/CIR/CodeGen/bitint-record-layout.c
+++ b/clang/test/CIR/CodeGen/bitint-record-layout.c
@@ -139,62 +139,62 @@ struct Outer2 {
 
 
 union JustBIUnion jbiu = { .bi = 54321 };
-// CIR-DAG: cir.global external @jbiu = #cir.const_record<{#cir.int<54321> : !cir.int<s, 65, bitint>}> : !rec_JustBIUnion {alignment = 8 : i64}
+// CIR-DAG: cir.global external @jbiu = #cir.const_record<{#cir.int<54321> : !cir.int<s, 65, bitint>}> : !rec_JustBIUnion align(8)
 // LLVM-DAG: @jbiu = global %union.JustBIUnion { i128 54321 }, align 8
 union BIUnion biunion = { .bi = 12345 };
-// CIR-DAG: cir.global external @biunion = #cir.const_record<{#cir.int<12345> : !cir.int<s, 65, bitint>}> : !rec_BIUnion {alignment = 8 : i64}
+// CIR-DAG: cir.global external @biunion = #cir.const_record<{#cir.int<12345> : !cir.int<s, 65, bitint>}> : !rec_BIUnion align(8)
 // LLVM-DAG: @biunion = global %union.BIUnion { i128 12345 }, align 8
 
 union BIUnionArr biuarr = { .arr = { 'a', 'b', 'c' } };
-// CIR-DAG: cir.global external @biuarr = #cir.const_record<{#cir.const_array<[#cir.int<97> : !s8i, #cir.int<98> : !s8i, #cir.int<99> : !s8i], trailing_zeros> : !cir.array<!s8i x 20>}> : !rec_BIUnionArr {alignment = 8 : i64}
+// CIR-DAG: cir.global external @biuarr = #cir.const_record<{#cir.const_array<[#cir.int<97> : !s8i, #cir.int<98> : !s8i, #cir.int<99> : !s8i], trailing_zeros> : !cir.array<!s8i x 20>}> : !rec_BIUnionArr align(8)
 // Classic-codegen represents the constant by splitting the init part of
 // the string and the zeros separately, plus not as a string.  Else this is effectively the same.
 // LLVMCIR-DAG: @biuarr = global <{ [20 x i8], [4 x i8] }> <{ [20 x i8] c"abc\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [4 x i8] zeroinitializer }>, align 8
 // OGCG-DAG:    @biuarr = global { <{ i8, i8, i8, [17 x i8] }>, [4 x i8] } { <{ i8, i8, i8, [17 x i8] }> <{ i8 97, i8 98, i8 99, [17 x i8] zeroinitializer }>, [4 x i8] zeroinitializer }, align 8
 
 struct First65 f65[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @f65 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !cir.int<s, 65, bitint>, #cir.int<222> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_First65, #cir.const_record<{#cir.int<3> : !cir.int<s, 65, bitint>, #cir.int<444> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_First65]> : !cir.array<!rec_First65 x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @f65 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !cir.int<s, 65, bitint>, #cir.int<222> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_First65, #cir.const_record<{#cir.int<3> : !cir.int<s, 65, bitint>, #cir.int<444> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_First65]> : !cir.array<!rec_First65 x 2> align(16)
 // LLVM-DAG: @f65 = global [2 x %struct.First65] [%struct.First65 <{ i128 1, i32 222, [4 x i8] zeroinitializer }>, %struct.First65 <{ i128 3, i32 444, [4 x i8] zeroinitializer }>], align 16
 struct Middle65 m65[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @m65 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.int<222> : !cir.int<s, 65, bitint>, #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_Middle65, #cir.const_record<{#cir.int<3> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.int<444> : !cir.int<s, 65, bitint>, #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_Middle65]> : !cir.array<!rec_Middle65 x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @m65 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.int<222> : !cir.int<s, 65, bitint>, #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_Middle65, #cir.const_record<{#cir.int<3> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.int<444> : !cir.int<s, 65, bitint>, #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_Middle65]> : !cir.array<!rec_Middle65 x 2> align(16)
 // LLVM-DAG: @m65 = global [2 x %struct.Middle65] [%struct.Middle65 <{ i8 1, [7 x i8] zeroinitializer, i128 222, i32 0, [4 x i8] zeroinitializer }>, %struct.Middle65 <{ i8 3, [7 x i8] zeroinitializer, i128 444, i32 0, [4 x i8] zeroinitializer }>], align 16
 struct Last65 l65[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @l65 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<222> : !cir.int<s, 65, bitint>}> : !rec_Last65, #cir.const_record<{#cir.int<3> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<444> : !cir.int<s, 65, bitint>}> : !rec_Last65]> : !cir.array<!rec_Last65 x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @l65 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<222> : !cir.int<s, 65, bitint>}> : !rec_Last65, #cir.const_record<{#cir.int<3> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<444> : !cir.int<s, 65, bitint>}> : !rec_Last65]> : !cir.array<!rec_Last65 x 2> align(16)
 // LLVM-DAG: @l65 = global [2 x %struct.Last65] [%struct.Last65 <{ i32 1, [4 x i8] zeroinitializer, i128 222 }>, %struct.Last65 <{ i32 3, [4 x i8] zeroinitializer, i128 444 }>], align 16
 
 struct First127 f127[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @f127 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !cir.int<s, 127, bitint>, #cir.int<222> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_First127, #cir.const_record<{#cir.int<3> : !cir.int<s, 127, bitint>, #cir.int<444> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_First127]> : !cir.array<!rec_First127 x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @f127 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !cir.int<s, 127, bitint>, #cir.int<222> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_First127, #cir.const_record<{#cir.int<3> : !cir.int<s, 127, bitint>, #cir.int<444> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_First127]> : !cir.array<!rec_First127 x 2> align(16)
 // LLVM-DAG: @f127 = global [2 x %struct.First127] [%struct.First127 <{ i128 1, i32 222, [4 x i8] zeroinitializer }>, %struct.First127 <{ i128 3, i32 444, [4 x i8] zeroinitializer }>], align 16
 struct Middle127 m127[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @m127 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.int<222> : !cir.int<s, 127, bitint>, #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_Middle127, #cir.const_record<{#cir.int<3> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.int<444> : !cir.int<s, 127, bitint>, #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_Middle127]> : !cir.array<!rec_Middle127 x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @m127 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.int<222> : !cir.int<s, 127, bitint>, #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_Middle127, #cir.const_record<{#cir.int<3> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.int<444> : !cir.int<s, 127, bitint>, #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_Middle127]> : !cir.array<!rec_Middle127 x 2> align(16)
 // LLVM-DAG: @m127 = global [2 x %struct.Middle127] [%struct.Middle127 <{ i8 1, [7 x i8] zeroinitializer, i128 222, i32 0, [4 x i8] zeroinitializer }>, %struct.Middle127 <{ i8 3, [7 x i8] zeroinitializer, i128 444, i32 0, [4 x i8] zeroinitializer }>], align 16
 struct Last127 l127[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @l127 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<222> : !cir.int<s, 127, bitint>}> : !rec_Last127, #cir.const_record<{#cir.int<3> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<444> : !cir.int<s, 127, bitint>}> : !rec_Last127]> : !cir.array<!rec_Last127 x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @l127 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<222> : !cir.int<s, 127, bitint>}> : !rec_Last127, #cir.const_record<{#cir.int<3> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<444> : !cir.int<s, 127, bitint>}> : !rec_Last127]> : !cir.array<!rec_Last127 x 2> align(16)
 // LLVM-DAG: @l127 = global [2 x %struct.Last127] [%struct.Last127 <{ i32 1, [4 x i8] zeroinitializer, i128 222 }>, %struct.Last127 <{ i32 3, [4 x i8] zeroinitializer, i128 444 }>], align 16
 
 struct First128 f128[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @f128 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s128i_bitint, #cir.int<222> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_First128, #cir.const_record<{#cir.int<3> : !s128i_bitint, #cir.int<444> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_First128]> : !cir.array<!rec_First128 x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @f128 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s128i_bitint, #cir.int<222> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_First128, #cir.const_record<{#cir.int<3> : !s128i_bitint, #cir.int<444> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_First128]> : !cir.array<!rec_First128 x 2> align(16)
 // LLVM-DAG: @f128 = global [2 x %struct.First128] [%struct.First128 <{ i128 1, i32 222, [4 x i8] zeroinitializer }>, %struct.First128 <{ i128 3, i32 444, [4 x i8] zeroinitializer }>], align 16
 struct Middle128 m128[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @m128 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.int<222> : !s128i_bitint, #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_Middle128, #cir.const_record<{#cir.int<3> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.int<444> : !s128i_bitint, #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_Middle128]> : !cir.array<!rec_Middle128 x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @m128 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.int<222> : !s128i_bitint, #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_Middle128, #cir.const_record<{#cir.int<3> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.int<444> : !s128i_bitint, #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_Middle128]> : !cir.array<!rec_Middle128 x 2> align(16)
 // LLVM-DAG: @m128 = global [2 x %struct.Middle128] [%struct.Middle128 <{ i8 1, [7 x i8] zeroinitializer, i128 222, i32 0, [4 x i8] zeroinitializer }>, %struct.Middle128 <{ i8 3, [7 x i8] zeroinitializer, i128 444, i32 0, [4 x i8] zeroinitializer }>], align 16
 struct Last128 l128[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @l128 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<222> : !s128i_bitint}> : !rec_Last128, #cir.const_record<{#cir.int<3> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<444> : !s128i_bitint}> : !rec_Last128]> : !cir.array<!rec_Last128 x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @l128 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<222> : !s128i_bitint}> : !rec_Last128, #cir.const_record<{#cir.int<3> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<444> : !s128i_bitint}> : !rec_Last128]> : !cir.array<!rec_Last128 x 2> align(16)
 // LLVM-DAG: @l128 = global [2 x %struct.Last128] [%struct.Last128 <{ i32 1, [4 x i8] zeroinitializer, i128 222 }>, %struct.Last128 <{ i32 3, [4 x i8] zeroinitializer, i128 444 }>], align 16
 
 struct ArrMem arrMem[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @arrMem = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.const_array<[#cir.int<222> : !s128i_bitint], trailing_zeros> : !cir.array<!s128i_bitint x 2>}> : !rec_ArrMem, #cir.const_record<{#cir.int<3> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.const_array<[#cir.int<444> : !s128i_bitint], trailing_zeros> : !cir.array<!s128i_bitint x 2>}> : !rec_ArrMem]> : !cir.array<!rec_ArrMem x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @arrMem = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.const_array<[#cir.int<222> : !s128i_bitint], trailing_zeros> : !cir.array<!s128i_bitint x 2>}> : !rec_ArrMem, #cir.const_record<{#cir.int<3> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.const_array<[#cir.int<444> : !s128i_bitint], trailing_zeros> : !cir.array<!s128i_bitint x 2>}> : !rec_ArrMem]> : !cir.array<!rec_ArrMem x 2> align(16)
 // LLVM-DAG: @arrMem = global [2 x %struct.ArrMem] [%struct.ArrMem <{ i32 1, [4 x i8] zeroinitializer, [2 x i128] [i128 222, i128 0] }>, %struct.ArrMem <{ i32 3, [4 x i8] zeroinitializer, [2 x i128] [i128 444, i128 0] }>], align 16
 
 struct ArrMem65 arrMem65[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @arrMem65 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.const_array<[#cir.int<222> : !cir.int<s, 65, bitint>], trailing_zeros> : !cir.array<!cir.int<s, 65, bitint> x 2>}> : !rec_ArrMem65, #cir.const_record<{#cir.int<3> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.const_array<[#cir.int<444> : !cir.int<s, 65, bitint>], trailing_zeros> : !cir.array<!cir.int<s, 65, bitint> x 2>}> : !rec_ArrMem65]> : !cir.array<!rec_ArrMem65 x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @arrMem65 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.const_array<[#cir.int<222> : !cir.int<s, 65, bitint>], trailing_zeros> : !cir.array<!cir.int<s, 65, bitint> x 2>}> : !rec_ArrMem65, #cir.const_record<{#cir.int<3> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.const_array<[#cir.int<444> : !cir.int<s, 65, bitint>], trailing_zeros> : !cir.array<!cir.int<s, 65, bitint> x 2>}> : !rec_ArrMem65]> : !cir.array<!rec_ArrMem65 x 2> align(16)
 // LLVM-DAG: @arrMem65 = global [2 x %struct.ArrMem65] [%struct.ArrMem65 <{ i32 1, [4 x i8] zeroinitializer, [2 x i128] [i128 222, i128 0] }>, %struct.ArrMem65 <{ i32 3, [4 x i8] zeroinitializer, [2 x i128] [i128 444, i128 0] }>], align 16
 
 struct Outer nestedArr[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @nestedArr = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.const_record<{#cir.int<222> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<0> : !s128i_bitint}> : !rec_Inner}> : !rec_Outer, #cir.const_record<{#cir.int<3> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.const_record<{#cir.int<444> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<0> : !s128i_bitint}> : !rec_Inner}> : !rec_Outer]> : !cir.array<!rec_Outer x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @nestedArr = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.const_record<{#cir.int<222> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<0> : !s128i_bitint}> : !rec_Inner}> : !rec_Outer, #cir.const_record<{#cir.int<3> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.const_record<{#cir.int<444> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<0> : !s128i_bitint}> : !rec_Inner}> : !rec_Outer]> : !cir.array<!rec_Outer x 2> align(16)
 // LLVM-DAG: @nestedArr = global [2 x %struct.Outer] [%struct.Outer { i8 1, [7 x i8] zeroinitializer, %struct.Inner <{ i32 222, [4 x i8] zeroinitializer, i128 0 }> }, %struct.Outer { i8 3, [7 x i8] zeroinitializer, %struct.Inner <{ i32 444, [4 x i8] zeroinitializer, i128 0 }> }], align 16
 struct Outer2 nestedArr2[2] = {{1, 222}, {3, 444}};
-// CIR-DAG: cir.global external @nestedArr2 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.const_record<{#cir.int<222> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<0> : !s128i_bitint}> : !rec_Inner2, #cir.int<0> : !s16i, #cir.zero : !cir.array<!u8i x 6>}> : !rec_Outer2, #cir.const_record<{#cir.int<3> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.const_record<{#cir.int<444> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<0> : !s128i_bitint}> : !rec_Inner2, #cir.int<0> : !s16i, #cir.zero : !cir.array<!u8i x 6>}> : !rec_Outer2]> : !cir.array<!rec_Outer2 x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @nestedArr2 = #cir.const_array<[#cir.const_record<{#cir.int<1> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.const_record<{#cir.int<222> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<0> : !s128i_bitint}> : !rec_Inner2, #cir.int<0> : !s16i, #cir.zero : !cir.array<!u8i x 6>}> : !rec_Outer2, #cir.const_record<{#cir.int<3> : !s8i, #cir.zero : !cir.array<!u8i x 7>, #cir.const_record<{#cir.int<444> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<0> : !s128i_bitint}> : !rec_Inner2, #cir.int<0> : !s16i, #cir.zero : !cir.array<!u8i x 6>}> : !rec_Outer2]> : !cir.array<!rec_Outer2 x 2> align(16)
 // LLVM-DAG: @nestedArr2 = global [2 x %struct.Outer2] [%struct.Outer2 { i8 1, [7 x i8] zeroinitializer, %struct.Inner2 <{ i32 222, [4 x i8] zeroinitializer, i128 0 }>, i16 0, [6 x i8] zeroinitializer }, %struct.Outer2 { i8 3, [7 x i8] zeroinitializer, %struct.Inner2 <{ i32 444, [4 x i8] zeroinitializer, i128 0 }>, i16 0, [6 x i8] zeroinitializer }], align 16
 
 _BitInt(128) get_bi(void) { return l128[1].bi; }

diff  --git a/clang/test/CIR/CodeGen/bitint-wide-be.c b/clang/test/CIR/CodeGen/bitint-wide-be.c
index 829ff07ad7330..40acbccccdf54 100644
--- a/clang/test/CIR/CodeGen/bitint-wide-be.c
+++ b/clang/test/CIR/CodeGen/bitint-wide-be.c
@@ -6,14 +6,14 @@
 // RUN: FileCheck --check-prefixes=LLVM --input-file=%t.ll %s
 
 unsigned _BitInt(200) w200 = 5;
-// CIR-DAG: cir.global external @w200 = #cir.int<5> : !cir.int<u, 200, bitint> {alignment = 8 : i64}
+// CIR-DAG: cir.global external @w200 = #cir.int<5> : !cir.int<u, 200, bitint> align(8)
 // LLVM-DAG: @w200 = global i256 5, align 8
 signed _BitInt(256) w256 = -1;
-// CIR-DAG: cir.global external @w256 = #cir.int<-1> : !s256i_bitint {alignment = 8 : i64}
+// CIR-DAG: cir.global external @w256 = #cir.int<-1> : !s256i_bitint align(8)
 // LLVM-DAG: @w256 = global i256 -1, align 8
 
 signed _BitInt(129) g_neg = -1;
-// CIR-DAG: cir.global external @g_neg = #cir.int<-1> : !cir.int<s, 129, bitint> {alignment = 8 : i64}
+// CIR-DAG: cir.global external @g_neg = #cir.int<-1> : !cir.int<s, 129, bitint> align(8)
 // LLVM-DAG: @g_neg = global [24 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF", align 8
 
 struct HasWide129 {
@@ -21,7 +21,7 @@ struct HasWide129 {
   signed _BitInt(129) bi;
 };
 struct HasWide129 g_struct = {7, -1};
-// CIR-DAG: cir.global external @g_struct = #cir.const_record<{#cir.int<7> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<-1> : !cir.int<s, 129, bitint>}> : !rec_HasWide129 {alignment = 8 : i64}
+// CIR-DAG: cir.global external @g_struct = #cir.const_record<{#cir.int<7> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<-1> : !cir.int<s, 129, bitint>}> : !rec_HasWide129 align(8)
 // Note: CIR packs this, but classic codegen doesn't.  Layout is still
 // identical, but there is a slight IR 
diff erence.
 // LLVM-DAG: %struct.HasWide129 = type {{[<]?}}{ i32, [4 x i8], [24 x i8] }{{[>]?}}
@@ -29,7 +29,7 @@ struct HasWide129 g_struct = {7, -1};
 
 signed _BitInt(129) g_arr[2] = {-1, -2};
 // Note: Alignment is 8 instead of 16 like on x86_64
-// CIR-DAG: cir.global external @g_arr = #cir.const_array<[#cir.int<-1> : !cir.int<s, 129, bitint>, #cir.int<-2> : !cir.int<s, 129, bitint>]> : !cir.array<!cir.int<s, 129, bitint> x 2> {alignment = 8 : i64}
+// CIR-DAG: cir.global external @g_arr = #cir.const_array<[#cir.int<-1> : !cir.int<s, 129, bitint>, #cir.int<-2> : !cir.int<s, 129, bitint>]> : !cir.array<!cir.int<s, 129, bitint> x 2> align(8)
 // LLVM-DAG: @g_arr = global [2 x [24 x i8]] {{\[\[}}24 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF", [24 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FE"], align 8
 
 struct HasWide129Array {
@@ -37,16 +37,16 @@ struct HasWide129Array {
   signed _BitInt(129) bi[2];
 };
 struct HasWide129Array g_arr2 = {7, {-1, -2}};
-// CIR-DAG: cir.global external @g_arr2 = #cir.const_record<{#cir.int<7> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.const_array<[#cir.int<-1> : !cir.int<s, 129, bitint>, #cir.int<-2> : !cir.int<s, 129, bitint>]> : !cir.array<!cir.int<s, 129, bitint> x 2>}> : !rec_HasWide129Array {alignment = 8 : i64}
+// CIR-DAG: cir.global external @g_arr2 = #cir.const_record<{#cir.int<7> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.const_array<[#cir.int<-1> : !cir.int<s, 129, bitint>, #cir.int<-2> : !cir.int<s, 129, bitint>]> : !cir.array<!cir.int<s, 129, bitint> x 2>}> : !rec_HasWide129Array align(8)
 // LLVM-DAG: %struct.HasWide129Array = type {{[<]?}}{ i32, [4 x i8], [2 x [24 x i8]] }{{[>]?}}
 // LLVM-DAG: @g_arr2 = global %struct.HasWide129Array {{[<]?}}{ i32 7, [4 x i8] zeroinitializer, [2 x [24 x i8]] {{\[\[}}24 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF", [24 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FE"] }{{[>]?}}, align 8
 
 signed _BitInt(320) g320 = -1;
-// CIR-DAG: cir.global external @g320 = #cir.int<-1> : !cir.int<s, 320, bitint> {alignment = 8 : i64}
+// CIR-DAG: cir.global external @g320 = #cir.int<-1> : !cir.int<s, 320, bitint> align(8)
 // LLVM-DAG: @g320 = global [40 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF", align 8
 
 _BitInt(129) g_one = 1;
-// CIR-DAG: cir.global external @g_one = #cir.int<1> : !cir.int<s, 129, bitint> {alignment = 8 : i64}
+// CIR-DAG: cir.global external @g_one = #cir.int<1> : !cir.int<s, 129, bitint> align(8)
 // LLVM-DAG: @g_one = global [24 x i8] c"\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01", align 8
 
 int g_is_one(void) {

diff  --git a/clang/test/CIR/CodeGen/bitint-wide.c b/clang/test/CIR/CodeGen/bitint-wide.c
index d0402b5dabc2d..ac96abc4c9274 100644
--- a/clang/test/CIR/CodeGen/bitint-wide.c
+++ b/clang/test/CIR/CodeGen/bitint-wide.c
@@ -6,14 +6,14 @@
 // RUN: FileCheck --check-prefixes=LLVM,OGCG --input-file=%t.ll %s
 
 unsigned _BitInt(200) w200 = 5;
-// CIR-DAG: cir.global external @w200 = #cir.int<5> : !cir.int<u, 200, bitint> {alignment = 8 : i64}
+// CIR-DAG: cir.global external @w200 = #cir.int<5> : !cir.int<u, 200, bitint> align(8)
 // LLVM-DAG: @w200 = global i256 5, align 8
 signed _BitInt(256) w256 = -1;
-// CIR-DAG: cir.global external @w256 = #cir.int<-1> : !s256i_bitint {alignment = 8 : i64}
+// CIR-DAG: cir.global external @w256 = #cir.int<-1> : !s256i_bitint align(8)
 // LLVM-DAG: @w256 = global i256 -1, align 8
 
 signed _BitInt(129) g_neg = -1;
-// CIR-DAG: cir.global external @g_neg = #cir.int<-1> : !cir.int<s, 129, bitint> {alignment = 8 : i64}
+// CIR-DAG: cir.global external @g_neg = #cir.int<-1> : !cir.int<s, 129, bitint> align(8)
 // LLVM-DAG: @g_neg = global [24 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF", align 8
 
 struct HasWide129 {
@@ -21,14 +21,14 @@ struct HasWide129 {
   signed _BitInt(129) bi;
 };
 struct HasWide129 g_struct = {7, -1};
-// CIR-DAG: cir.global external @g_struct = #cir.const_record<{#cir.int<7> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<-1> : !cir.int<s, 129, bitint>}> : !rec_HasWide129 {alignment = 8 : i64}
+// CIR-DAG: cir.global external @g_struct = #cir.const_record<{#cir.int<7> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.int<-1> : !cir.int<s, 129, bitint>}> : !rec_HasWide129 align(8)
 // Note: CIR packs this, but classic codegen doesn't.  Layout is still
 // identical, but there is a slight IR 
diff erence.
 // LLVM-DAG: %struct.HasWide129 = type {{[<]?}}{ i32, [4 x i8], [24 x i8] }{{[>]?}}
 // LLVM-DAG: @g_struct = global %struct.HasWide129 {{[<]?}}{ i32 7, [4 x i8] zeroinitializer, [24 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF" }{{[>]?}}, align 8
 
 signed _BitInt(129) g_arr[2] = {-1, -2};
-// CIR-DAG: cir.global external @g_arr = #cir.const_array<[#cir.int<-1> : !cir.int<s, 129, bitint>, #cir.int<-2> : !cir.int<s, 129, bitint>]> : !cir.array<!cir.int<s, 129, bitint> x 2> {alignment = 16 : i64}
+// CIR-DAG: cir.global external @g_arr = #cir.const_array<[#cir.int<-1> : !cir.int<s, 129, bitint>, #cir.int<-2> : !cir.int<s, 129, bitint>]> : !cir.array<!cir.int<s, 129, bitint> x 2> align(16)
 // LLVM-DAG: @g_arr = global [2 x [24 x i8]] {{\[\[}}24 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF", [24 x i8] c"\FE\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF"], align 16
 
 struct HasWide129Array {
@@ -36,12 +36,12 @@ struct HasWide129Array {
   signed _BitInt(129) bi[2];
 };
 struct HasWide129Array g_arr2 = {7, {-1, -2}};
-// CIR-DAG: cir.global external @g_arr2 = #cir.const_record<{#cir.int<7> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.const_array<[#cir.int<-1> : !cir.int<s, 129, bitint>, #cir.int<-2> : !cir.int<s, 129, bitint>]> : !cir.array<!cir.int<s, 129, bitint> x 2>}> : !rec_HasWide129Array {alignment = 8 : i64}
+// CIR-DAG: cir.global external @g_arr2 = #cir.const_record<{#cir.int<7> : !s32i, #cir.zero : !cir.array<!u8i x 4>, #cir.const_array<[#cir.int<-1> : !cir.int<s, 129, bitint>, #cir.int<-2> : !cir.int<s, 129, bitint>]> : !cir.array<!cir.int<s, 129, bitint> x 2>}> : !rec_HasWide129Array align(8)
 // LLVM-DAG: %struct.HasWide129Array = type {{[<]?}}{ i32, [4 x i8], [2 x [24 x i8]] }{{[>]?}}
 // LLVM-DAG: @g_arr2 = global %struct.HasWide129Array {{[<]?}}{ i32 7, [4 x i8] zeroinitializer, [2 x [24 x i8]] {{\[\[}}24 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF", [24 x i8] c"\FE\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF"] }{{[>]?}}, align 8
 
 signed _BitInt(320) g320 = -1;
-// CIR-DAG: cir.global external @g320 = #cir.int<-1> : !cir.int<s, 320, bitint> {alignment = 8 : i64}
+// CIR-DAG: cir.global external @g320 = #cir.int<-1> : !cir.int<s, 320, bitint> align(8)
 // LLVM-DAG: @g320 = global [40 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF", align 8
 
 _BitInt(129) local_var(int a) {

diff  --git a/clang/test/CIR/CodeGen/bitint.c b/clang/test/CIR/CodeGen/bitint.c
index edd7b91cae49a..558b68f2a6b2c 100644
--- a/clang/test/CIR/CodeGen/bitint.c
+++ b/clang/test/CIR/CodeGen/bitint.c
@@ -21,8 +21,8 @@ __int128 int128_var;
 signed _BitInt(256) bitint256_var;
 signed _BitInt(254) bitint254_var;
 
-// CIR: cir.global external @bitint128_var = #cir.int<0> : !s128i_bitint {alignment = 8 : i64}
-// CIR: cir.global external @int128_var = #cir.int<0> : !s128i {alignment = 16 : i64}
+// CIR: cir.global external @bitint128_var = #cir.int<0> : !s128i_bitint align(8)
+// CIR: cir.global external @int128_var = #cir.int<0> : !s128i align(16)
 // CIR: cir.global external @bitint256_var = #cir.int<0> : !s256i_bitint
 // CIR: cir.global external @bitint254_var = #cir.int<0> : !cir.int<s, 254, bitint>
 

diff  --git a/clang/test/CIR/CodeGen/builtin-call.cpp b/clang/test/CIR/CodeGen/builtin-call.cpp
index 2b486d10dc65a..5d84d0e762223 100644
--- a/clang/test/CIR/CodeGen/builtin-call.cpp
+++ b/clang/test/CIR/CodeGen/builtin-call.cpp
@@ -24,7 +24,6 @@ const double parsed = strtod(str, nullptr);
 // CIR-BEFORE-LPP:    cir.store {{.*}}%[[CALL]], %[[GET_GLOB]] : !cir.double, !cir.ptr<!cir.double>
 // CIR-BEFORE-LPP:    %{{.*}} = cir.get_global @_ZL6parsed : !cir.ptr<!cir.double>
 // CIR-BEFORE-LPP:  }
-// CIR-BEFORE-LPP:}
 
 // CIR: cir.global "private" internal dso_local @_ZL6parsed = #cir.fp<0.000000e+00> : !cir.double
 // CIR: cir.func internal private @__cxx_global_var_init{{.*}}() {
@@ -60,7 +59,7 @@ const void* v = memcpy(nullptr, nullptr, 1);
 // CIR-BEFORE-LPP:    cir.store align(8) %[[MEMCPY]], %[[GET_V]] : !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>
 // CIR-BEFORE-LPP:  }
 
-// CIR:  cir.global external @v = #cir.ptr<null> : !cir.ptr<!void> {alignment = 8 : i64, ast = #cir.var.decl.ast}
+// CIR:  cir.global external @v = #cir.ptr<null> : !cir.ptr<!void> align(8) ast(#cir.var.decl.ast)
 // CIR:  cir.func internal private @__cxx_global_var_init.1() {
 // CIR:    %[[GET_V:.*]] = cir.get_global @v : !cir.ptr<!cir.ptr<!void>>
 // CIR:    %[[NULL1:.*]] = cir.const #cir.ptr<null> : !cir.ptr<!void>

diff  --git a/clang/test/CIR/CodeGen/compound_literal.c b/clang/test/CIR/CodeGen/compound_literal.c
index 7d38e5b2cd6d0..688affe928127 100644
--- a/clang/test/CIR/CodeGen/compound_literal.c
+++ b/clang/test/CIR/CodeGen/compound_literal.c
@@ -6,68 +6,68 @@
 // RUN: FileCheck --input-file=%t.ll %s -check-prefix=LLVM
 
 int *p1 = (int[]){1, 2, 3};
-// CIR: cir.global "private" internal @".compoundliteral" = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i]> : !cir.array<!s32i x 3> {alignment = 4 : i64}
-// CIR: cir.global external @p1 = #cir.global_view<@".compoundliteral"> : !cir.ptr<!s32i> {alignment = 8 : i64}
+// CIR: cir.global "private" internal @".compoundliteral" = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i]> : !cir.array<!s32i x 3> align(4)
+// CIR: cir.global external @p1 = #cir.global_view<@".compoundliteral"> : !cir.ptr<!s32i> align(8)
 // LLVM: @.compoundliteral = internal global [3 x i32] [i32 1, i32 2, i32 3], align 4
 // LLVM: @p1 = global ptr @.compoundliteral, align 8
 
 int *p2 = &(int){42};
-// CIR: cir.global "private" internal @".compoundliteral.1" = #cir.int<42> : !s32i {alignment = 4 : i64}
-// CIR: cir.global external @p2 = #cir.global_view<@".compoundliteral.1"> : !cir.ptr<!s32i> {alignment = 8 : i64}
+// CIR: cir.global "private" internal @".compoundliteral.1" = #cir.int<42> : !s32i align(4)
+// CIR: cir.global external @p2 = #cir.global_view<@".compoundliteral.1"> : !cir.ptr<!s32i> align(8)
 // LLVM: @.compoundliteral.1 = internal global i32 42, align 4
 // LLVM: @p2 = global ptr @.compoundliteral.1, align 8
 
 struct S { int x, y; };
 struct S *p3 = &(struct S){5, 10};
-// CIR: cir.global "private" internal @".compoundliteral.2" = #cir.const_record<{#cir.int<5> : !s32i, #cir.int<10> : !s32i}> : !rec_S {alignment = 4 : i64}
-// CIR: cir.global external @p3 = #cir.global_view<@".compoundliteral.2"> : !cir.ptr<!rec_S> {alignment = 8 : i64}
+// CIR: cir.global "private" internal @".compoundliteral.2" = #cir.const_record<{#cir.int<5> : !s32i, #cir.int<10> : !s32i}> : !rec_S align(4)
+// CIR: cir.global external @p3 = #cir.global_view<@".compoundliteral.2"> : !cir.ptr<!rec_S> align(8)
 // LLVM: @.compoundliteral.2 = internal global %struct.S { i32 5, i32 10 }, align 4
 // LLVM: @p3 = global ptr @.compoundliteral.2, align 8
 
 int *p4[2] = { (int[]){1, 2}, (int[]){3, 4} };
-// CIR: cir.global "private" internal @".compoundliteral.3" = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i]> : !cir.array<!s32i x 2> {alignment = 4 : i64}
-// CIR: cir.global "private" internal @".compoundliteral.4" = #cir.const_array<[#cir.int<3> : !s32i, #cir.int<4> : !s32i]> : !cir.array<!s32i x 2> {alignment = 4 : i64}
-// CIR: cir.global external @p4 = #cir.const_array<[#cir.global_view<@".compoundliteral.3"> : !cir.ptr<!s32i>, #cir.global_view<@".compoundliteral.4"> : !cir.ptr<!s32i>]> : !cir.array<!cir.ptr<!s32i> x 2> {alignment = 16 : i64}
+// CIR: cir.global "private" internal @".compoundliteral.3" = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i]> : !cir.array<!s32i x 2> align(4)
+// CIR: cir.global "private" internal @".compoundliteral.4" = #cir.const_array<[#cir.int<3> : !s32i, #cir.int<4> : !s32i]> : !cir.array<!s32i x 2> align(4)
+// CIR: cir.global external @p4 = #cir.const_array<[#cir.global_view<@".compoundliteral.3"> : !cir.ptr<!s32i>, #cir.global_view<@".compoundliteral.4"> : !cir.ptr<!s32i>]> : !cir.array<!cir.ptr<!s32i> x 2> align(16)
 // LLVM: @.compoundliteral.3 = internal global [2 x i32] [i32 1, i32 2], align 4
 // LLVM: @.compoundliteral.4 = internal global [2 x i32] [i32 3, i32 4], align 4
 // LLVM: @p4 = global [2 x ptr] [ptr @.compoundliteral.3, ptr @.compoundliteral.4], align 16
 
 struct W { int *p; };
 struct W p5 = { (int[]){10, 20} };
-// CIR: cir.global "private" internal @".compoundliteral.5" = #cir.const_array<[#cir.int<10> : !s32i, #cir.int<20> : !s32i]> : !cir.array<!s32i x 2> {alignment = 4 : i64}
-// CIR: cir.global external @p5 = #cir.const_record<{#cir.global_view<@".compoundliteral.5"> : !cir.ptr<!s32i>}> : !rec_W {alignment = 8 : i64}
+// CIR: cir.global "private" internal @".compoundliteral.5" = #cir.const_array<[#cir.int<10> : !s32i, #cir.int<20> : !s32i]> : !cir.array<!s32i x 2> align(4)
+// CIR: cir.global external @p5 = #cir.const_record<{#cir.global_view<@".compoundliteral.5"> : !cir.ptr<!s32i>}> : !rec_W align(8)
 // LLVM: @.compoundliteral.5 = internal global [2 x i32] [i32 10, i32 20], align 4
 // LLVM: @p5 = global %struct.W { ptr @.compoundliteral.5 }, align 8
 
 const int *p6 = (const int[]){1, 2, 3};
-// CIR: cir.global "private" constant internal @".compoundliteral.6" = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i]> : !cir.array<!s32i x 3> {alignment = 4 : i64}
-// CIR: cir.global external @p6 = #cir.global_view<@".compoundliteral.6"> : !cir.ptr<!s32i> {alignment = 8 : i64}
+// CIR: cir.global "private" constant internal @".compoundliteral.6" = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i]> : !cir.array<!s32i x 3> align(4)
+// CIR: cir.global external @p6 = #cir.global_view<@".compoundliteral.6"> : !cir.ptr<!s32i> align(8)
 // LLVM: @.compoundliteral.6 = internal constant [3 x i32] [i32 1, i32 2, i32 3], align 4
 // LLVM: @p6 = global ptr @.compoundliteral.6, align 8
 
 char *p7 = (char[]){"hi"};
-// CIR: cir.global "private" internal @".compoundliteral.7" = #cir.const_array<"hi" : !cir.array<!s8i x 2>, trailing_zeros> : !cir.array<!s8i x 3> {alignment = 1 : i64}
-// CIR: cir.global external @p7 = #cir.global_view<@".compoundliteral.7"> : !cir.ptr<!s8i> {alignment = 8 : i64}
+// CIR: cir.global "private" internal @".compoundliteral.7" = #cir.const_array<"hi" : !cir.array<!s8i x 2>, trailing_zeros> : !cir.array<!s8i x 3> align(1)
+// CIR: cir.global external @p7 = #cir.global_view<@".compoundliteral.7"> : !cir.ptr<!s8i> align(8)
 // LLVM: @.compoundliteral.7 = internal global [3 x i8] c"hi\00", align 1
 // LLVM: @p7 = global ptr @.compoundliteral.7, align 8
 
 int *p8 = &((int[]){10, 20, 30})[1];
-// CIR: cir.global "private" internal @".compoundliteral.8" = #cir.const_array<[#cir.int<10> : !s32i, #cir.int<20> : !s32i, #cir.int<30> : !s32i]> : !cir.array<!s32i x 3> {alignment = 4 : i64}
-// CIR: cir.global external @p8 = #cir.global_view<@".compoundliteral.8", [1 : i32]> : !cir.ptr<!s32i> {alignment = 8 : i64}
+// CIR: cir.global "private" internal @".compoundliteral.8" = #cir.const_array<[#cir.int<10> : !s32i, #cir.int<20> : !s32i, #cir.int<30> : !s32i]> : !cir.array<!s32i x 3> align(4)
+// CIR: cir.global external @p8 = #cir.global_view<@".compoundliteral.8", [1 : i32]> : !cir.ptr<!s32i> align(8)
 // LLVM: @.compoundliteral.8 = internal global [3 x i32] [i32 10, i32 20, i32 30], align 4
 // LLVM: @p8 = global ptr getelementptr {{(inbounds nuw )?}}(i8, ptr @.compoundliteral.8, i64 4), align 8
 
 int x;
 int **p9 = (int*[]){&x, &x};
 // CIR: cir.global external @x
-// CIR: cir.global "private" internal @".compoundliteral.9" = #cir.const_array<[#cir.global_view<@x> : !cir.ptr<!s32i>, #cir.global_view<@x> : !cir.ptr<!s32i>]> : !cir.array<!cir.ptr<!s32i> x 2> {alignment = 8 : i64}
-// CIR: cir.global external @p9 = #cir.global_view<@".compoundliteral.9"> : !cir.ptr<!cir.ptr<!s32i>> {alignment = 8 : i64}
+// CIR: cir.global "private" internal @".compoundliteral.9" = #cir.const_array<[#cir.global_view<@x> : !cir.ptr<!s32i>, #cir.global_view<@x> : !cir.ptr<!s32i>]> : !cir.array<!cir.ptr<!s32i> x 2> align(8)
+// CIR: cir.global external @p9 = #cir.global_view<@".compoundliteral.9"> : !cir.ptr<!cir.ptr<!s32i>> align(8)
 // LLVM: @x = global i32 0, align 4
 // LLVM: @.compoundliteral.9 = internal global [2 x ptr] [ptr @x, ptr @x], align 8
 // LLVM: @p9 = global ptr @.compoundliteral.9, align 8
 
 unsigned long addr = (unsigned long)(int[]){1, 2, 3};
-// CIR: cir.global "private" internal @".compoundliteral.10" = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i]> : !cir.array<!s32i x 3> {alignment = 4 : i64}
-// CIR: cir.global external @addr = #cir.global_view<@".compoundliteral.10"> : !u64i {alignment = 8 : i64}
+// CIR: cir.global "private" internal @".compoundliteral.10" = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i]> : !cir.array<!s32i x 3> align(4)
+// CIR: cir.global external @addr = #cir.global_view<@".compoundliteral.10"> : !u64i align(8)
 // LLVM: @.compoundliteral.10 = internal global [3 x i32] [i32 1, i32 2, i32 3], align 4
 // LLVM: @addr = global i64 ptrtoint (ptr @.compoundliteral.10 to i64), align 8

diff  --git a/clang/test/CIR/CodeGen/delete-array-aligned.cpp b/clang/test/CIR/CodeGen/delete-array-aligned.cpp
index a02476de7da04..493c6487341a9 100644
--- a/clang/test/CIR/CodeGen/delete-array-aligned.cpp
+++ b/clang/test/CIR/CodeGen/delete-array-aligned.cpp
@@ -15,7 +15,7 @@ struct alignas(128) OverAlignedTy {
 };
 void test_global_aligned(OverAlignedTy *p) { delete[] p; }
 // CIR-LABEL: cir.func no_inline dso_local @_Z19test_global_alignedP13OverAlignedTy(
-// CIR-BEFORE: cir.delete_array %{{.*}} : !cir.ptr<!rec_OverAlignedTy> {delete_fn = @_ZdaPvSt11align_val_t, delete_params = #cir.usual_delete_params<alignment = 128>, element_align = 128 : i64}
+// CIR-BEFORE: cir.delete_array %{{.*}} : !cir.ptr<!rec_OverAlignedTy> delete_fn(@_ZdaPvSt11align_val_t) delete_params<alignment = 128> element_align(128)
 
 // CIR-AFTER:      %[[PTR:.*]] = cir.cast bitcast %{{.*}} : !cir.ptr<!rec_OverAlignedTy> -> !cir.ptr<!void>
 // CIR-AFTER-NEXT: cir.cleanup.scope {
@@ -36,7 +36,7 @@ struct alignas(128) OverAlignedTyClassDelete {
 };
 void test_class_align_only(OverAlignedTyClassDelete *p) { delete[] p; }
 // CIR-LABEL: cir.func no_inline dso_local @_Z21test_class_align_onlyP24OverAlignedTyClassDelete(
-// CIR-BEFORE: cir.delete_array %{{.*}} : !cir.ptr<!rec_OverAlignedTyClassDelete> {delete_fn = @_ZN24OverAlignedTyClassDeletedaEPvSt11align_val_t, delete_params = #cir.usual_delete_params<alignment = 128>, element_align = 128 : i64}
+// CIR-BEFORE: cir.delete_array %{{.*}} : !cir.ptr<!rec_OverAlignedTyClassDelete> delete_fn(@_ZN24OverAlignedTyClassDeletedaEPvSt11align_val_t) delete_params<alignment = 128> element_align(128)
 // CIR-AFTER: %[[PTR:.*]] = cir.cast bitcast %{{.*}} : !cir.ptr<!rec_OverAlignedTyClassDelete> -> !cir.ptr<!void>
 // CIR-AFTER-NEXT: cir.cleanup.scope {
 // CIR-AFTER-NEXT:   cir.yield
@@ -56,7 +56,7 @@ struct alignas(128) OverAlignedTyClassDeleteCookie {
 };
 void test_class_size_align(OverAlignedTyClassDeleteCookie *p) { delete[] p; }
 // CIR-LABEL: cir.func no_inline dso_local @_Z21test_class_size_alignP30OverAlignedTyClassDeleteCookie(
-// CIR-BEFORE: cir.delete_array %{{.*}} : !cir.ptr<!rec_OverAlignedTyClassDeleteCookie> {delete_fn = @_ZN30OverAlignedTyClassDeleteCookiedaEPvmSt11align_val_t, delete_params = #cir.usual_delete_params<size = true, alignment = 128>, element_align = 128 : i64}
+// CIR-BEFORE: cir.delete_array %{{.*}} : !cir.ptr<!rec_OverAlignedTyClassDeleteCookie> delete_fn(@_ZN30OverAlignedTyClassDeleteCookiedaEPvmSt11align_val_t) delete_params<size = true, alignment = 128> element_align(128)
 // CIR-AFTER:      %[[ORIG_PTR:.*]] = cir.cast bitcast %{{.*}} : !cir.ptr<!rec_OverAlignedTyClassDeleteCookie> -> !cir.ptr<!u8i>
 // CIR-AFTER:      %[[COOKIE_STRIDE:.*]] = cir.ptr_stride %[[ORIG_PTR]], %{{.*}} : (!cir.ptr<!u8i>, !s64i) -> !cir.ptr<!u8i>
 // CIR-AFTER-NEXT: %[[PTR:.*]] = cir.cast bitcast %[[COOKIE_STRIDE]] : !cir.ptr<!u8i> -> !cir.ptr<!void>
@@ -80,7 +80,7 @@ struct alignas(128) OverAlignedTyClassDeleteDtor {
 };
 void test_class_align_only_dtor(OverAlignedTyClassDeleteDtor *p) { delete[] p; }
 // CIR-LABEL: cir.func no_inline dso_local @_Z26test_class_align_only_dtorP28OverAlignedTyClassDeleteDtor(
-// CIR-BEFORE: cir.delete_array %{{.*}} : !cir.ptr<!rec_OverAlignedTyClassDeleteDtor> {delete_fn = @_ZN28OverAlignedTyClassDeleteDtordaEPvSt11align_val_t, delete_params = #cir.usual_delete_params<alignment = 128>, element_align = 128 : i64, element_dtor = @_ZN28OverAlignedTyClassDeleteDtorD1Ev}
+// CIR-BEFORE: cir.delete_array %{{.*}} : !cir.ptr<!rec_OverAlignedTyClassDeleteDtor> delete_fn(@_ZN28OverAlignedTyClassDeleteDtordaEPvSt11align_val_t) delete_params<alignment = 128> element_dtor(@_ZN28OverAlignedTyClassDeleteDtorD1Ev) element_align(128)
 // CIR-AFTER:      %[[ORIG_PTR:.*]] = cir.cast bitcast %{{.*}} : !cir.ptr<!rec_OverAlignedTyClassDeleteDtor> -> !cir.ptr<!u8i>
 // CIR-AFTER:      %[[COOKIE_STRIDE:.*]] = cir.ptr_stride %[[ORIG_PTR]], %{{.*}} : (!cir.ptr<!u8i>, !s64i) -> !cir.ptr<!u8i>
 // CIR-AFTER-NEXT: %[[PTR:.*]] = cir.cast bitcast %[[COOKIE_STRIDE]] : !cir.ptr<!u8i> -> !cir.ptr<!void>
@@ -114,7 +114,7 @@ void test_class_size_align_dtor(OverAlignedTyClassDeleteCookieDtor *p) {
   delete[] p;
 }
 // CIR-LABEL: cir.func no_inline dso_local @_Z26test_class_size_align_dtorP34OverAlignedTyClassDeleteCookieDtor(
-// CIR-BEFORE: cir.delete_array %{{.*}} : !cir.ptr<!rec_OverAlignedTyClassDeleteCookieDtor> {delete_fn = @_ZN34OverAlignedTyClassDeleteCookieDtordaEPvmSt11align_val_t, delete_params = #cir.usual_delete_params<size = true, alignment = 128>, element_align = 128 : i64, element_dtor = @_ZN34OverAlignedTyClassDeleteCookieDtorD1Ev}
+// CIR-BEFORE: cir.delete_array %{{.*}} : !cir.ptr<!rec_OverAlignedTyClassDeleteCookieDtor> delete_fn(@_ZN34OverAlignedTyClassDeleteCookieDtordaEPvmSt11align_val_t) delete_params<size = true, alignment = 128> element_dtor(@_ZN34OverAlignedTyClassDeleteCookieDtorD1Ev) element_align(128)
 // CIR-AFTER:      %[[ORIG_PTR:.*]] = cir.cast bitcast %{{.*}} : !cir.ptr<!rec_OverAlignedTyClassDeleteCookieDtor> -> !cir.ptr<!u8i>
 // CIR-AFTER:      %[[COOKIE_STRIDE:.*]] = cir.ptr_stride %[[ORIG_PTR]], %{{.*}} : (!cir.ptr<!u8i>, !s64i) -> !cir.ptr<!u8i>
 // CIR-AFTER-NEXT: %[[PTR:.*]] = cir.cast bitcast %[[COOKIE_STRIDE]] : !cir.ptr<!u8i> -> !cir.ptr<!void>

diff  --git a/clang/test/CIR/CodeGen/delete-array-overaligned-cookie.cpp b/clang/test/CIR/CodeGen/delete-array-overaligned-cookie.cpp
index e9c4a329ac5a1..5e676045fbda3 100644
--- a/clang/test/CIR/CodeGen/delete-array-overaligned-cookie.cpp
+++ b/clang/test/CIR/CodeGen/delete-array-overaligned-cookie.cpp
@@ -19,7 +19,7 @@ void test_delete_array(OverAligned *a) {
   delete[] a;
 }
 // CIR-LABEL: cir.func {{.*}}@_Z17test_delete_arrayP11OverAligned(
-// CIR-BEFORE:     cir.delete_array %{{.*}} : !cir.ptr<!rec_OverAligned> {delete_fn = @_ZdaPvmSt11align_val_t, delete_params = #cir.usual_delete_params<size = true, alignment = 64>, element_align = 64 : i64, element_dtor = @_ZN11OverAlignedD1Ev}
+// CIR-BEFORE:     cir.delete_array %{{.*}} : !cir.ptr<!rec_OverAligned> delete_fn(@_ZdaPvmSt11align_val_t) delete_params<size = true, alignment = 64> element_dtor(@_ZN11OverAlignedD1Ev) element_align(64)
 
 // CIR-AFTER: %[[A:.*]] = cir.alloca "a" align(8) init : !cir.ptr<!cir.ptr<!rec_OverAligned>>
 // CIR-AFTER: %[[LOAD_A:.*]] = cir.load align(8) %[[A]] : !cir.ptr<!cir.ptr<!rec_OverAligned>>, !cir.ptr<!rec_OverAligned>
@@ -58,7 +58,7 @@ void test_not_aligned_new_but_need_cookie(NotAlignedNewButNeedCookie *a) {
   delete [] a;
 }
 // CIR-LABEL: cir.func {{.*}}@_Z36test_not_aligned_new_but_need_cookieP26NotAlignedNewButNeedCookie(
-// CIR-BEFORE: cir.delete_array %{{.*}} : !cir.ptr<!rec_NotAlignedNewButNeedCookie> {delete_fn = @_ZdaPvm, delete_params = #cir.usual_delete_params<size = true>, element_align = 16 : i64, element_dtor = @_ZN26NotAlignedNewButNeedCookieD1Ev}
+// CIR-BEFORE: cir.delete_array %{{.*}} : !cir.ptr<!rec_NotAlignedNewButNeedCookie> delete_fn(@_ZdaPvm) delete_params<size = true> element_dtor(@_ZN26NotAlignedNewButNeedCookieD1Ev) element_align(16)
 // CIR-AFTER: %[[A:.*]] = cir.alloca "a" align(8) init : !cir.ptr<!cir.ptr<!rec_NotAlignedNewButNeedCookie>>
 
 // CIR-AFTER: %[[LOAD_A:.*]] = cir.load align(8) %[[A]] : !cir.ptr<!cir.ptr<!rec_NotAlignedNewButNeedCookie>>, !cir.ptr<!rec_NotAlignedNewButNeedCookie>

diff  --git a/clang/test/CIR/CodeGen/delete-array-throwing-dtor.cpp b/clang/test/CIR/CodeGen/delete-array-throwing-dtor.cpp
index d5a63bc65edc8..998b14c13eeb5 100644
--- a/clang/test/CIR/CodeGen/delete-array-throwing-dtor.cpp
+++ b/clang/test/CIR/CodeGen/delete-array-throwing-dtor.cpp
@@ -23,7 +23,7 @@ void test_delete_array_throwing_dtor(ThrowingDtor *ptr) {
 // CIR-BEFORE-CXXABI:   %[[NULL:.*]] = cir.const #cir.ptr<null>
 // CIR-BEFORE-CXXABI:   %[[NOT_NULL:.*]] = cir.cmp ne %[[PTR]], %[[NULL]]
 // CIR-BEFORE-CXXABI:   cir.if %[[NOT_NULL]] {
-// CIR-BEFORE-CXXABI:     cir.delete_array %[[PTR]] : !cir.ptr<!rec_ThrowingDtor> dtor_may_throw {delete_fn = @_ZdaPvm, delete_params = #cir.usual_delete_params<size = true>, element_align = 4 : i64, element_dtor = @_ZN12ThrowingDtorD1Ev}
+// CIR-BEFORE-CXXABI:     cir.delete_array %[[PTR]] : !cir.ptr<!rec_ThrowingDtor> delete_fn(@_ZdaPvm) delete_params<size = true> element_dtor(@_ZN12ThrowingDtorD1Ev) dtor_may_throw element_align(4)
 // CIR-BEFORE-CXXABI:   }
 
 // CIR-AFTER-CXXABI: IR Dump After CXXABILowering: cir-cxxabi-lowering

diff  --git a/clang/test/CIR/CodeGen/delete-array-unsized-dtor.cpp b/clang/test/CIR/CodeGen/delete-array-unsized-dtor.cpp
index c1216b87c589e..835ef405ebc0f 100644
--- a/clang/test/CIR/CodeGen/delete-array-unsized-dtor.cpp
+++ b/clang/test/CIR/CodeGen/delete-array-unsized-dtor.cpp
@@ -20,10 +20,9 @@ void test(Dtor *ptr) {
 }
 
 // CIR-BEFORE: cir.func {{.*}} @_Z4testP4Dtor
-// CIR-BEFORE:   cir.delete_array %{{.*}} : !cir.ptr<!rec_Dtor> {
-// CIR-BEFORE-SAME: delete_fn = @_ZdaPv,
-// CIR-BEFORE-SAME: delete_params = #cir.usual_delete_params<>,
-// CIR-BEFORE-SAME: element_dtor = @_ZN4DtorD1Ev}
+// CIR-BEFORE:   cir.delete_array %{{.*}} : !cir.ptr<!rec_Dtor>
+// CIR-BEFORE-SAME: delete_fn(@_ZdaPv)
+// CIR-BEFORE-SAME: element_dtor(@_ZN4DtorD1Ev)
 
 // CIR: cir.func {{.*}} @_Z4testP4Dtor
 // CIR:   %[[PTR:.*]] = cir.load

diff  --git a/clang/test/CIR/CodeGen/delete-array.cpp b/clang/test/CIR/CodeGen/delete-array.cpp
index 210cfd383824f..d97d59977dbc2 100644
--- a/clang/test/CIR/CodeGen/delete-array.cpp
+++ b/clang/test/CIR/CodeGen/delete-array.cpp
@@ -15,7 +15,7 @@ void test_delete_array(int *ptr) {
 // CIR-BEFORE:   %[[NULL:.*]] = cir.const #cir.ptr<null> : !cir.ptr<!s32i>
 // CIR-BEFORE:   %[[NOT_NULL:.*]] = cir.cmp ne %[[PTR]], %[[NULL]] : !cir.ptr<!s32i>
 // CIR-BEFORE:   cir.if %[[NOT_NULL]] {
-// CIR-BEFORE:     cir.delete_array %[[PTR]] : !cir.ptr<!s32i> {delete_fn = @_ZdaPv, delete_params = #cir.usual_delete_params<>
+// CIR-BEFORE:     cir.delete_array %[[PTR]] : !cir.ptr<!s32i> delete_fn(@_ZdaPv)
 // CIR-BEFORE:   }
 
 // CIR: cir.func {{.*}} @_Z17test_delete_arrayPi
@@ -65,7 +65,7 @@ void test_simple_delete_array(SimpleArrDelete *ptr) {
 // CIR-BEFORE:   %[[NULL:.*]] = cir.const #cir.ptr<null> : !cir.ptr<!rec_SimpleArrDelete>
 // CIR-BEFORE:   %[[NOT_NULL:.*]] = cir.cmp ne %[[PTR]], %[[NULL]] : !cir.ptr<!rec_SimpleArrDelete>
 // CIR-BEFORE:   cir.if %[[NOT_NULL]] {
-// CIR-BEFORE:     cir.delete_array %[[PTR]] : !cir.ptr<!rec_SimpleArrDelete> {delete_fn = @_ZN15SimpleArrDeletedaEPv, delete_params = #cir.usual_delete_params<>
+// CIR-BEFORE:     cir.delete_array %[[PTR]] : !cir.ptr<!rec_SimpleArrDelete> delete_fn(@_ZN15SimpleArrDeletedaEPv)
 // CIR-BEFORE:   }
 
 // CIR: cir.func {{.*}} @_Z24test_simple_delete_arrayP15SimpleArrDelete
@@ -116,7 +116,7 @@ void test_sized_array_delete(SizedArrayDelete *ptr) {
 // CIR-BEFORE:   %[[NULL:.*]] = cir.const #cir.ptr<null> : !cir.ptr<!rec_SizedArrayDelete>
 // CIR-BEFORE:   %[[NOT_NULL:.*]] = cir.cmp ne %[[PTR]], %[[NULL]] : !cir.ptr<!rec_SizedArrayDelete>
 // CIR-BEFORE:   cir.if %[[NOT_NULL]] {
-// CIR-BEFORE:     cir.delete_array %[[PTR]] : !cir.ptr<!rec_SizedArrayDelete> {delete_fn = @_ZN16SizedArrayDeletedaEPvm, delete_params = #cir.usual_delete_params<size = true>
+// CIR-BEFORE:     cir.delete_array %[[PTR]] : !cir.ptr<!rec_SizedArrayDelete> delete_fn(@_ZN16SizedArrayDeletedaEPvm) delete_params<size = true>
 // CIR-BEFORE:   }
 
 // CIR: cir.func {{.*}} @_Z23test_sized_array_deleteP16SizedArrayDelete
@@ -182,10 +182,10 @@ void test_delete_array_destructed(Destructed *ptr) {
 // CIR-BEFORE:   %[[NULL:.*]] = cir.const #cir.ptr<null> : !cir.ptr<!rec_Destructed>
 // CIR-BEFORE:   %[[NOT_NULL:.*]] = cir.cmp ne %[[PTR]], %[[NULL]] : !cir.ptr<!rec_Destructed>
 // CIR-BEFORE:   cir.if %[[NOT_NULL]] {
-// CIR-BEFORE:     cir.delete_array %[[PTR]] : !cir.ptr<!rec_Destructed> {
-// CIR-BEFORE-SAME:       delete_fn = @_ZdaPvm,
-// CIR-BEFORE-SAME:       delete_params = #cir.usual_delete_params<size = true>,
-// CIR-BEFORE-SAME:       element_dtor = @_ZN10DestructedD1Ev}
+// CIR-BEFORE:     cir.delete_array %[[PTR]] : !cir.ptr<!rec_Destructed>
+// CIR-BEFORE-SAME:       delete_fn(@_ZdaPvm)
+// CIR-BEFORE-SAME:       delete_params<size = true>
+// CIR-BEFORE-SAME:       element_dtor(@_ZN10DestructedD1Ev)
 // CIR-BEFORE:   }
 
 // CIR: cir.func {{.*}} @_Z28test_delete_array_destructedP10Destructed

diff  --git a/clang/test/CIR/CodeGen/empty-union.cpp b/clang/test/CIR/CodeGen/empty-union.cpp
index a608eefbc77aa..a297cf3a34a03 100644
--- a/clang/test/CIR/CodeGen/empty-union.cpp
+++ b/clang/test/CIR/CodeGen/empty-union.cpp
@@ -34,7 +34,7 @@ struct WrapEmpty {
 WrapEmpty w;
 // CIR-DAG: !rec_OuterWithEmpty = !cir.union<"OuterWithEmpty" {data !rec_Empty, data !s32i}>
 // CIR-DAG: !rec_WrapEmpty = !cir.struct<"WrapEmpty" {data !rec_OuterWithEmpty, data !s32i}>
-// CIR-DAG: cir.global external @w = #cir.zero : !rec_WrapEmpty {alignment = 4 : i64}
+// CIR-DAG: cir.global external @w = #cir.zero : !rec_WrapEmpty align(4)
 // LLVM-DAG: %struct.WrapEmpty = type { %union.OuterWithEmpty, i32 }
 // LLVM-DAG: %union.OuterWithEmpty = type { i32 }
 // LLVM-DAG: @w = global %struct.WrapEmpty zeroinitializer, align 4

diff  --git a/clang/test/CIR/CodeGen/fixed-point-literal.c b/clang/test/CIR/CodeGen/fixed-point-literal.c
index 9fc8f7398e17f..3188ac888cadf 100644
--- a/clang/test/CIR/CodeGen/fixed-point-literal.c
+++ b/clang/test/CIR/CodeGen/fixed-point-literal.c
@@ -6,25 +6,25 @@
 // RUN: FileCheck --input-file=%t.ll %s --check-prefix=LLVM
 
 _Fract global_f = 0.5r;
-// CIR: cir.global external @global_f = #cir.int<16384> : !s16i {alignment = 2 : i64}
+// CIR: cir.global external @global_f = #cir.int<16384> : !s16i align(2)
 // LLVM: @global_f = global i16 16384, align 2
 _Accum global_a = 1.5k;
-// CIR: cir.global external @global_a = #cir.int<49152> : !s32i {alignment = 4 : i64}
+// CIR: cir.global external @global_a = #cir.int<49152> : !s32i align(4)
 // LLVM: @global_a = global i32 49152, align 4
 
 short _Fract global_short_f = 0.5hr;
-// CIR: cir.global external @global_short_f = #cir.int<64> : !s8i {alignment = 1 : i64}
+// CIR: cir.global external @global_short_f = #cir.int<64> : !s8i align(1)
 // LLVM: @global_short_f = global i8 64, align 1
 short _Accum global_short_a = 1.5hk;
-// CIR: cir.global external @global_short_a = #cir.int<192> : !s16i {alignment = 2 : i64}
+// CIR: cir.global external @global_short_a = #cir.int<192> : !s16i align(2)
 // LLVM: @global_short_a = global i16 192, align 2
 
 unsigned short _Fract global_unsigned_short_f = 0.5uhr;
-// CIR: cir.global external @global_unsigned_short_f = #cir.int<128> : !u8i {alignment = 1 : i64}
+// CIR: cir.global external @global_unsigned_short_f = #cir.int<128> : !u8i align(1)
 // LLVM: @global_unsigned_short_f = global i8 -128, align 1
 
 unsigned short _Accum global_unsigned_short_a = 1.5uhk;
-// CIR: cir.global external @global_unsigned_short_a = #cir.int<384> : !u16i {alignment = 2 : i64}
+// CIR: cir.global external @global_unsigned_short_a = #cir.int<384> : !u16i align(2)
 // LLVM: @global_unsigned_short_a = global i16 384, align 2
 
 // Test basic fixed-point literals

diff  --git a/clang/test/CIR/CodeGen/fp-contract.c b/clang/test/CIR/CodeGen/fp-contract.c
index 3abe498a0cfb7..22f9ed3814024 100644
--- a/clang/test/CIR/CodeGen/fp-contract.c
+++ b/clang/test/CIR/CodeGen/fp-contract.c
@@ -101,7 +101,7 @@ float fmuladd_strict(float a, float b, float c) {
   return a * b + c;
 }
 // CIR-STRICT-LABEL: cir.func {{.*}}@fmuladd_strict
-// CIR-STRICT: cir.fmuladd %{{.*}}, %{{.*}}, %{{.*}} : !cir.float {fenv = #cir.fenv<{{.*}}strict_except = true>}
+// CIR-STRICT: cir.fmuladd %{{.*}}, %{{.*}}, %{{.*}} : !cir.float fenv<{{.*}}strict_except = true>
 // LLVM-STRICT-LABEL: @fmuladd_strict
 // LLVM-STRICT: call float @llvm.experimental.constrained.fmuladd.f32
 
@@ -112,7 +112,7 @@ float fmuladd_sub_strict(float a, float b, float c) {
 }
 // CIR-STRICT-LABEL: cir.func {{.*}}@fmuladd_sub_strict
 // CIR-STRICT: cir.fneg %{{.*}} : !cir.float
-// CIR-STRICT: cir.fmuladd %{{.*}}, %{{.*}}, %{{.*}} : !cir.float {fenv = #cir.fenv<{{.*}}strict_except = true>}
+// CIR-STRICT: cir.fmuladd %{{.*}}, %{{.*}}, %{{.*}} : !cir.float fenv<{{.*}}strict_except = true>
 // LLVM-STRICT-LABEL: @fmuladd_sub_strict
 // LLVM-STRICT: fneg float
 // LLVM-STRICT: call float @llvm.experimental.constrained.fmuladd.f32

diff  --git a/clang/test/CIR/CodeGen/global-const-alignment.cpp b/clang/test/CIR/CodeGen/global-const-alignment.cpp
index 032db170b0794..06e9b6be8ccf9 100644
--- a/clang/test/CIR/CodeGen/global-const-alignment.cpp
+++ b/clang/test/CIR/CodeGen/global-const-alignment.cpp
@@ -6,9 +6,9 @@
 // RUN: FileCheck --check-prefix=LLVM --input-file=%t.ll %s
 
 void use(const int *);
-// CIR-DAG: cir.global "private" constant cir_private @[[CONST_ARR_16:.*]] = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i, #cir.int<4> : !s32i]> : !cir.array<!s32i x 4> {alignment = 16 : i64}
+// CIR-DAG: cir.global "private" constant cir_private @[[CONST_ARR_16:.*]] = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i, #cir.int<4> : !s32i]> : !cir.array<!s32i x 4> align(16)
 // LLVM-DAG: @[[CONST_ARR_16:.*]] = private {{.*}}constant [4 x i32] [i32 1, i32 2, i32 3, i32 4], align 16
-// CIR-DAG: cir.global "private" constant cir_private @[[CONST_ARR_32:.*]] = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i, #cir.int<4> : !s32i]> : !cir.array<!s32i x 4> {alignment = 32 : i64}
+// CIR-DAG: cir.global "private" constant cir_private @[[CONST_ARR_32:.*]] = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> : !s32i, #cir.int<4> : !s32i]> : !cir.array<!s32i x 4> align(32)
 // LLVM-DAG: @[[CONST_ARR_32:.*]] = private {{.*}}constant [4 x i32] [i32 1, i32 2, i32 3, i32 4], align 32
 
 void f(bool condition) {

diff  --git a/clang/test/CIR/CodeGen/global-init-fenv.cpp b/clang/test/CIR/CodeGen/global-init-fenv.cpp
index 16b1c6e3195f7..80f09793cb50e 100644
--- a/clang/test/CIR/CodeGen/global-init-fenv.cpp
+++ b/clang/test/CIR/CodeGen/global-init-fenv.cpp
@@ -45,8 +45,8 @@ float g_nonconst = nc_x / nc_y;
 // CIR:         %[[X:.*]] = cir.load {{.*}} %[[XP]]
 // CIR:         %[[YP:.*]] = cir.get_global @nc_y : !cir.ptr<!cir.float>
 // CIR:         %[[Y:.*]] = cir.load {{.*}} %[[YP]]
-// CIR-STRICT:  %[[R:.*]] = cir.fdiv %[[X]], %[[Y]] : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-MAYTRAP: %[[R:.*]] = cir.fdiv %[[X]], %[[Y]] : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = false>}
+// CIR-STRICT:  %[[R:.*]] = cir.fdiv %[[X]], %[[Y]] : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-MAYTRAP: %[[R:.*]] = cir.fdiv %[[X]], %[[Y]] : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = false>
 // CIR-DEFAULT: %[[R:.*]] = cir.fdiv %{{.*}}, %{{.*}} : !cir.float
 // CIR-DEFAULT-NOT: fenv
 // CIR:         cir.store {{.*}} %[[R]], %[[G]] : !cir.float, !cir.ptr<!cir.float>
@@ -73,8 +73,8 @@ float g_const = c_x / c_y;
 // CIR-CONSTRAINED:   %[[X:.*]] = cir.load {{.*}} %[[XP]]
 // CIR-CONSTRAINED:   %[[YP:.*]] = cir.get_global @_ZL3c_y : !cir.ptr<!cir.float>
 // CIR-CONSTRAINED:   %[[Y:.*]] = cir.load {{.*}} %[[YP]]
-// CIR-STRICT:        %[[R:.*]] = cir.fdiv %[[X]], %[[Y]] : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-MAYTRAP:       %[[R:.*]] = cir.fdiv %[[X]], %[[Y]] : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = false>}
+// CIR-STRICT:        %[[R:.*]] = cir.fdiv %[[X]], %[[Y]] : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-MAYTRAP:       %[[R:.*]] = cir.fdiv %[[X]], %[[Y]] : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = false>
 // CIR-CONSTRAINED:   cir.store {{.*}} %[[R]], %[[G]] : !cir.float, !cir.ptr<!cir.float>
 
 // LLVM-CONSTRAINED: define {{.*}}void @__cxx_global_var_init.1() #[[ATTR]]
@@ -100,14 +100,14 @@ float g_mixed = ce_x / ce_y / nc_z;
 // CIR:               %[[A:.*]] = cir.load {{.*}} %[[AP]]
 // CIR:               %[[BP:.*]] = cir.get_global @_ZL4ce_y : !cir.ptr<!cir.float>
 // CIR:               %[[B:.*]] = cir.load {{.*}} %[[BP]]
-// CIR-STRICT:        %[[R0:.*]] = cir.fdiv %[[A]], %[[B]] : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-MAYTRAP:       %[[R0:.*]] = cir.fdiv %[[A]], %[[B]] : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = false>}
+// CIR-STRICT:        %[[R0:.*]] = cir.fdiv %[[A]], %[[B]] : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-MAYTRAP:       %[[R0:.*]] = cir.fdiv %[[A]], %[[B]] : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = false>
 // CIR-DEFAULT:       %[[R0:.*]] = cir.fdiv %[[A]], %[[B]] : !cir.float
 // CIR-DEFAULT-NOT:     fenv
 // CIR:               %[[CP:.*]] = cir.get_global @nc_z : !cir.ptr<!cir.float>
 // CIR:               %[[C:.*]] = cir.load {{.*}} %[[CP]]
-// CIR-STRICT:        %[[R1:.*]] = cir.fdiv %[[R0]], %[[C]] : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-MAYTRAP:       %[[R1:.*]] = cir.fdiv %[[R0]], %[[C]] : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = false>}
+// CIR-STRICT:        %[[R1:.*]] = cir.fdiv %[[R0]], %[[C]] : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-MAYTRAP:       %[[R1:.*]] = cir.fdiv %[[R0]], %[[C]] : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = false>
 // CIR-DEFAULT:       %[[R1:.*]] = cir.fdiv %[[R0]], %[[C]] : !cir.float
 // CIR-DEFAULT-NOT:     fenv
 // CIR:               cir.store {{.*}} %[[R1]], %[[G]] : !cir.float, !cir.ptr<!cir.float>

diff  --git a/clang/test/CIR/CodeGen/global-section.c b/clang/test/CIR/CodeGen/global-section.c
index 45caf52b6f81c..66b384650978c 100644
--- a/clang/test/CIR/CodeGen/global-section.c
+++ b/clang/test/CIR/CodeGen/global-section.c
@@ -6,18 +6,18 @@ extern int __attribute__((section(".shared"))) ext;
 int getExt(void) {
   return ext;
 }
-// CIR-DAG: cir.global "private" external @ext : !s32i {{{.*}}section = ".shared"}
+// CIR-DAG: cir.global "private" external @ext : !s32i {{.*}}section(".shared")
 // LLVM-DAG: @ext = external global i32, section ".shared"
 
 int __attribute__((section(".shared"))) glob = 42;
-// CIR-DAG: cir.global external @glob = #cir.int<42> : !s32i {{{.*}}section = ".shared"}
+// CIR-DAG: cir.global external @glob = #cir.int<42> : !s32i {{.*}}section(".shared")
 // LLVM-DAG: @glob = global i32 42, section ".shared"
 
 int getStaticLocal(void) {
   static int __attribute__((section(".static_local"))) sloc = 7;
   return ++sloc;
 }
-// CIR-DAG: cir.global "private" internal dso_local @getStaticLocal.sloc = #cir.int<7> : !s32i {{{.*}}section = ".static_local"}
+// CIR-DAG: cir.global "private" internal dso_local @getStaticLocal.sloc = #cir.int<7> : !s32i {{.*}}section(".static_local")
 // LLVM-DAG: @getStaticLocal.sloc = internal global i32 7, section ".static_local"
 
 __attribute__((section(".custom_fn"))) void func_in_section(void) {}

diff  --git a/clang/test/CIR/CodeGen/global-tls-dyn-init.cpp b/clang/test/CIR/CodeGen/global-tls-dyn-init.cpp
index fe6288f331227..4c23dedee6d38 100644
--- a/clang/test/CIR/CodeGen/global-tls-dyn-init.cpp
+++ b/clang/test/CIR/CodeGen/global-tls-dyn-init.cpp
@@ -23,7 +23,7 @@ struct CtorDtor {
 // LLVM-BOTH-DAG: @_ZTH6tls_cd = alias void (), ptr @__tls_init
 
 // Wrappers & aliases.
-// CIR:       cir.global internal tls_model = tls_dyn @__tls_guard = #cir.int<0> : !s8i {alignment = 1 : i64}
+// CIR:       cir.global internal tls_model = tls_dyn @__tls_guard = #cir.int<0> : !s8i align(1)
 // CIR-LABEL: cir.func comdat weak_odr private hidden @_ZTW19tls_cd_dyn_not_used() -> !cir.ptr<!rec_CtorDtor> {
 // CIR: cir.call @_ZTH19tls_cd_dyn_not_used() : () -> ()
 // CIR: %[[GET_GLOB:.*]] = cir.get_global thread_local @tls_cd_dyn_not_used : !cir.ptr<!rec_CtorDtor>

diff  --git a/clang/test/CIR/CodeGen/globals.cpp b/clang/test/CIR/CodeGen/globals.cpp
index be6816a7e046c..44e80fa7d2a6d 100644
--- a/clang/test/CIR/CodeGen/globals.cpp
+++ b/clang/test/CIR/CodeGen/globals.cpp
@@ -38,7 +38,7 @@ int *constArrAddr = &arr[2][1];
 
 bool bool_global = true;
 
-// CIR: cir.global external @bool_global = #true {alignment = 1 : i64}
+// CIR: cir.global external @bool_global = #true align(1)
 // LLVM: @bool_global = global i8 1, align 1
 // OGCG: @bool_global = global i8 1, align 1
 

diff  --git a/clang/test/CIR/CodeGen/lambda.cpp b/clang/test/CIR/CodeGen/lambda.cpp
index fc5d7c182308d..8bba0c82969eb 100644
--- a/clang/test/CIR/CodeGen/lambda.cpp
+++ b/clang/test/CIR/CodeGen/lambda.cpp
@@ -13,7 +13,7 @@ void use_global_lambda() {
   global_lambda();
 }
 
-// CIR: cir.global "private" internal dso_local @global_lambda = #cir.zero : ![[REC_LAM_GLOBAL_LAMBDA:.*]] {alignment = 1 : i64}
+// CIR: cir.global "private" internal dso_local @global_lambda = #cir.zero : ![[REC_LAM_GLOBAL_LAMBDA:.*]] align(1)
 // CIR: cir.func {{.*}} @_Z17use_global_lambdav()
 // CIR:   %[[LAMBDA:.*]] = cir.get_global @global_lambda : !cir.ptr<![[REC_LAM_GLOBAL_LAMBDA]]>
 // CIR:   cir.call @_ZNK3$_0clEv(%[[LAMBDA]]) : (!cir.ptr<![[REC_LAM_GLOBAL_LAMBDA]]> {llvm.align = 1 : i64, llvm.dereferenceable = 1 : i64, llvm.nonnull, llvm.noundef}) -> ()

diff  --git a/clang/test/CIR/CodeGen/local-const-aggregate-name-clash.cpp b/clang/test/CIR/CodeGen/local-const-aggregate-name-clash.cpp
index f0475ee765d85..099af0c366b1a 100644
--- a/clang/test/CIR/CodeGen/local-const-aggregate-name-clash.cpp
+++ b/clang/test/CIR/CodeGen/local-const-aggregate-name-clash.cpp
@@ -23,8 +23,8 @@ void f(bool which) {
   }
 }
 
-// CIR-DAG: cir.global "private" constant cir_private @[[GV0:.*]] = #cir.const_array<[#cir.int<10> : !s32i, #cir.int<20> : !s32i, #cir.int<30> : !s32i, #cir.int<40> : !s32i]> : !cir.array<!s32i x 4> {alignment = 16 : i64}
-// CIR-DAG: cir.global "private" constant cir_private @[[GV1:.*]] = #cir.const_array<[#cir.int<50> : !s32i, #cir.int<60> : !s32i]> : !cir.array<!s32i x 2> {alignment = 4 : i64}
+// CIR-DAG: cir.global "private" constant cir_private @[[GV0:.*]] = #cir.const_array<[#cir.int<10> : !s32i, #cir.int<20> : !s32i, #cir.int<30> : !s32i, #cir.int<40> : !s32i]> : !cir.array<!s32i x 4> align(16)
+// CIR-DAG: cir.global "private" constant cir_private @[[GV1:.*]] = #cir.const_array<[#cir.int<50> : !s32i, #cir.int<60> : !s32i]> : !cir.array<!s32i x 2> align(4)
 
 // CIR: cir.func{{.*}} @_Z1fb
 // CIR:   cir.get_global @[[GV0]] : !cir.ptr<!cir.array<!s32i x 4>>

diff  --git a/clang/test/CIR/CodeGen/no-odr-use.cpp b/clang/test/CIR/CodeGen/no-odr-use.cpp
index 7c786c258edf2..f325a96a3576f 100644
--- a/clang/test/CIR/CodeGen/no-odr-use.cpp
+++ b/clang/test/CIR/CodeGen/no-odr-use.cpp
@@ -15,11 +15,11 @@
 // LLVM-DAG: @[[F_A:.*]] = private constant {{.*}} { i32 1, [2 x i32] [i32 2, i32 3], [3 x i32] [i32 4, i32 5, i32 6] }
 // OGCG-DAG: @__const._Z1fi.a = private unnamed_addr constant {{.*}} { i32 1, [2 x i32] [i32 2, i32 3], [3 x i32] [i32 4, i32 5, i32 6] }
 
-// CIR-CXX11-DAG: cir.global "private" constant cir_private @_ZN7PR422765State3dmsE.const = #cir.const_array<[#cir.int<0> : !s64i, #cir.int<0> : !s64i]> : !cir.array<!s64i x 2> {alignment = 16 : i64}
+// CIR-CXX11-DAG: cir.global "private" constant cir_private @_ZN7PR422765State3dmsE.const = #cir.const_array<[#cir.int<0> : !s64i, #cir.int<0> : !s64i]> : !cir.array<!s64i x 2> align(16)
 // LLVM-CXX11-DAG :@_ZN7PR422765State3dmsE.const = private constant [2 x i64] zeroinitializer, align 16
 // OGCG-CXX11-DAG :@_ZN7PR422765State3dmsE.const = private constant [2 x i64] zeroinitializer, align 16
 
-// CIR-CXX20-DAG: cir.global "private" constant cir_private @_ZN7PR422765State3dmsE = #cir.const_array<[#cir.int<0> : !s64i, #cir.int<0> : !s64i]> : !cir.array<!s64i x 2> {alignment = 16 : i64}
+// CIR-CXX20-DAG: cir.global "private" constant cir_private @_ZN7PR422765State3dmsE = #cir.const_array<[#cir.int<0> : !s64i, #cir.int<0> : !s64i]> : !cir.array<!s64i x 2> align(16)
 // LLVM-CXX20-DAG :@_ZN7PR422765State3dmsE = private constant [2 x i64] zeroinitializer, align 16
 // OGCG-CXX20-DAG :@_ZN7PR422765State3dmsE = private constant [2 x i64] zeroinitializer, align 16
 

diff  --git a/clang/test/CIR/CodeGen/non-odr-use-non-ref.cpp b/clang/test/CIR/CodeGen/non-odr-use-non-ref.cpp
index 8777634debca3..1d2166f4f0430 100644
--- a/clang/test/CIR/CodeGen/non-odr-use-non-ref.cpp
+++ b/clang/test/CIR/CodeGen/non-odr-use-non-ref.cpp
@@ -6,7 +6,7 @@
 // RUN: FileCheck --input-file=%t.ll %s -check-prefix=LLVM
 
 static int a[10]{};
-// CIR: cir.global "private" internal dso_local @_ZL1a = #cir.zero : !cir.array<!s32i x 10> {alignment = 16 : i64}
+// CIR: cir.global "private" internal dso_local @_ZL1a = #cir.zero : !cir.array<!s32i x 10> align(16)
 // LLVM: @_ZL1a = internal global [10 x i32] zeroinitializer, align 16
 
 struct NonTrivialDestructor {

diff  --git a/clang/test/CIR/CodeGen/nonzeroinit-struct.cpp b/clang/test/CIR/CodeGen/nonzeroinit-struct.cpp
index e6166547232d1..0a6cd07b518f3 100644
--- a/clang/test/CIR/CodeGen/nonzeroinit-struct.cpp
+++ b/clang/test/CIR/CodeGen/nonzeroinit-struct.cpp
@@ -40,23 +40,23 @@ struct Trivial {
 
 // This CAN be zero-initialized.
 WithMemPtr mpt;
-// CIR-DAG: cir.global external @mpt = #cir.zero : !rec_WithMemPtr {alignment = 8 : i64}
+// CIR-DAG: cir.global external @mpt = #cir.zero : !rec_WithMemPtr align(8)
 // LLVM-DAG: @mpt = global %struct.WithMemPtr zeroinitializer, align 8
 
 WithMemPtr mpt_init{1, 2.0, &Other::func};
-// CIR-BEFORE-DAG: cir.global external @mpt_init = #cir.const_record<{#cir.int<1> : !s32i, #cir.fp<2.000000e+00> : !cir.double, #cir.method<@_ZN5Other4funcEif> : !cir.method<!cir.func<(!cir.ptr<!rec_Other>, !s32i, !cir.float)> in !rec_Other>}> : !rec_WithMemPtr {alignment = 8 : i64}
-// CIR-AFTER-DAG: cir.global external @mpt_init = #cir.const_record<{#cir.int<1> : !s32i, #cir.fp<2.000000e+00> : !cir.double, #cir.const_record<{#cir.global_view<@_ZN5Other4funcEif> : !s64i, #cir.int<0> : !s64i}> : !rec_anon_struct}> : !rec_WithMemPtr {alignment = 8 : i64}
+// CIR-BEFORE-DAG: cir.global external @mpt_init = #cir.const_record<{#cir.int<1> : !s32i, #cir.fp<2.000000e+00> : !cir.double, #cir.method<@_ZN5Other4funcEif> : !cir.method<!cir.func<(!cir.ptr<!rec_Other>, !s32i, !cir.float)> in !rec_Other>}> : !rec_WithMemPtr align(8)
+// CIR-AFTER-DAG: cir.global external @mpt_init = #cir.const_record<{#cir.int<1> : !s32i, #cir.fp<2.000000e+00> : !cir.double, #cir.const_record<{#cir.global_view<@_ZN5Other4funcEif> : !s64i, #cir.int<0> : !s64i}> : !rec_anon_struct}> : !rec_WithMemPtr align(8)
 // LLVM-DAG: @mpt_init = global %struct.WithMemPtr { i32 1, double 2.000000e+00, { i64, i64 } { i64 ptrtoint (ptr @_ZN5Other4funcEif to i64), i64 0 } }, align 8
 
 // This case has a trivial default constructor, but can't be zero-initialized.
 Trivial t;
-// CIR-BEFORE-DAG: cir.global external @t = #cir.const_record<{#cir.int<0> : !s32i, #cir.fp<0.000000e+00> : !cir.double, #cir.data_member<null> : !cir.data_member<!s32i in !rec_Other>}> : !rec_Trivial {alignment = 8 : i64}
-// CIR-AFTER-DAG: cir.global external @t = #cir.const_record<{#cir.int<0> : !s32i, #cir.fp<0.000000e+00> : !cir.double, #cir.int<-1> : !s64i}> : !rec_Trivial {alignment = 8 : i64} loc(#loc25)
+// CIR-BEFORE-DAG: cir.global external @t = #cir.const_record<{#cir.int<0> : !s32i, #cir.fp<0.000000e+00> : !cir.double, #cir.data_member<null> : !cir.data_member<!s32i in !rec_Other>}> : !rec_Trivial align(8)
+// CIR-AFTER-DAG: cir.global external @t = #cir.const_record<{#cir.int<0> : !s32i, #cir.fp<0.000000e+00> : !cir.double, #cir.int<-1> : !s64i}> : !rec_Trivial align(8) loc(#loc25)
 // LLVM-DAG: @t = global %struct.Trivial { i32 0, double 0.000000e+00, i64 -1 }, align 8
 
 Trivial t_init{1,2.2, &Other::x};
-// CIR-BEFORE-DAG: cir.global external @t_init = #cir.const_record<{#cir.int<1> : !s32i, #cir.fp<2.200000e+00> : !cir.double, #cir.data_member<[0]> : !cir.data_member<!s32i in !rec_Other>}> : !rec_Trivial {alignment = 8 : i64}
-// CIR-AFTER-DAG: cir.global external @t_init = #cir.const_record<{#cir.int<1> : !s32i, #cir.fp<2.200000e+00> : !cir.double, #cir.int<0> : !s64i}> : !rec_Trivial {alignment = 8 : i64}
+// CIR-BEFORE-DAG: cir.global external @t_init = #cir.const_record<{#cir.int<1> : !s32i, #cir.fp<2.200000e+00> : !cir.double, #cir.data_member<[0]> : !cir.data_member<!s32i in !rec_Other>}> : !rec_Trivial align(8)
+// CIR-AFTER-DAG: cir.global external @t_init = #cir.const_record<{#cir.int<1> : !s32i, #cir.fp<2.200000e+00> : !cir.double, #cir.int<0> : !s64i}> : !rec_Trivial align(8)
 // LLVM-DAG: @t_init = global %struct.Trivial { i32 1, double 2.200000e+00, i64 0 }, align 8
 
 extern "C" void local() {

diff  --git a/clang/test/CIR/CodeGen/paren-list-agg-init.cpp b/clang/test/CIR/CodeGen/paren-list-agg-init.cpp
index ae57f5887cb93..2321e658a4118 100644
--- a/clang/test/CIR/CodeGen/paren-list-agg-init.cpp
+++ b/clang/test/CIR/CodeGen/paren-list-agg-init.cpp
@@ -128,33 +128,33 @@ namespace gh61567 {
 }
 
 // LLVM-DAG: [[A1:@.*a1.*]] = internal constant [[STRUCT_A]] { i8 3, double 2.000000e+00 }, align 8
-// CIR-DAG: cir.global "private" constant internal dso_local @_ZL2a1 = #cir.const_record<{#cir.int<3> : !s8i, #cir.fp<2.000000e+00> : !cir.double}> : ![[STRUCT_A]] {alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant internal dso_local @_ZL2a1 = #cir.const_record<{#cir.int<3> : !s8i, #cir.fp<2.000000e+00> : !cir.double}> : ![[STRUCT_A]] align(8)
 constexpr A a1(3.1, 2.0);
 // LLVM-DAG: [[A2:@.*a2.*]] = internal constant [[STRUCT_A]] { i8 99, double 0.000000e+00 }, align 8
-// CIR-DAG: cir.global "private" constant internal dso_local @_ZL2a2 = #cir.const_record<{#cir.int<99> : !s8i, #cir.fp<0.000000e+00> : !cir.double}> : ![[STRUCT_A]] {alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant internal dso_local @_ZL2a2 = #cir.const_record<{#cir.int<99> : !s8i, #cir.fp<0.000000e+00> : !cir.double}> : ![[STRUCT_A]] align(8)
 constexpr auto a2 = static_cast<A>('c');
 // LLVM-DAG: [[B1:@.*b1.*]] = internal constant [[STRUCT_B]] { [[STRUCT_A]] { i8 99, double 0.000000e+00 }, i32 0 }, align 8
-// CIR-DAG: cir.global "private" constant internal dso_local @_ZL2b1 = #cir.const_record<{#cir.const_record<{#cir.int<99> : !s8i, #cir.fp<0.000000e+00> : !cir.double}> : ![[STRUCT_A]], #cir.int<0> : !s32i}> : ![[STRUCT_B]] {alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant internal dso_local @_ZL2b1 = #cir.const_record<{#cir.const_record<{#cir.int<99> : !s8i, #cir.fp<0.000000e+00> : !cir.double}> : ![[STRUCT_A]], #cir.int<0> : !s32i}> : ![[STRUCT_B]] align(8)
 constexpr B b1(A('c'));
 // LLVMCIR-DAG: [[C1:@.*c1.*]] = internal constant [[STRUCT_C]] <{ [[STRUCT_B]] { [[STRUCT_A]] { i8 99, double 0.000000e+00 }, i32 0 }, [[STRUCT_A]] { i8 3, double 2.000000e+00 }, i32 0, [4 x i8] zeroinitializer }>, align 8
 // OGCG-DAG:    [[C1:@.*c1.*]] = internal constant { [[STRUCT_A]], i32, [4 x i8], i8, double, i32 } { [[STRUCT_A]] { i8 99, double 0.000000e+00 }, i32 0, [4 x i8] {{.*}}, i8 3, double 2.000000e+00, i32 0 }, align
 // CIR-DAG: cir.global "private" constant internal dso_local @_ZL2c1 = #cir.const_record<{#cir.const_record<{#cir.const_record<{#cir.int<99> : !s8i, #cir.fp<0.000000e+00> : !cir.double}> : ![[STRUCT_A]], #cir.int<0> : !s32i}> : !rec_B, #cir.const_record<{#cir.int<3> : !s8i, #cir.fp<2.000000e+00> : !cir.double}> : ![[STRUCT_A]], #cir.int<0> : !s32i, #cir.zero : !cir.array<!u8i x 4>}> : !rec_C
 constexpr C c1(b1, a1);
 // LLVM-DAG: [[U1:@.*]] = internal constant {{.*}} { [[STRUCT_A]] { i8 1, double 1.000000e+00 } }, align 8
-// CIR-DAG: cir.global "private" constant internal dso_local @_ZL2u1 = #cir.const_record<{#cir.const_record<{#cir.int<1> : !s8i, #cir.fp<1.000000e+00> : !cir.double}> : ![[STRUCT_A]]}> : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant internal dso_local @_ZL2u1 = #cir.const_record<{#cir.const_record<{#cir.int<1> : !s8i, #cir.fp<1.000000e+00> : !cir.double}> : ![[STRUCT_A]]}> : !{{.*}}align(8)
 constexpr U u1(A(1, 1));
 // LLVMCIR-DAG: [[D1:@.*d1.*]] = internal constant [[STRUCT_D]] { [[STRUCT_A]] { i8 2, double 2.000000e+00 }, [[STRUCT_A]] { i8 2, double 2.000000e+00 }, i8 0, [[STRUCT_A]] zeroinitializer }, align 8
 // OGCG-DAG:    [[D1:@.*d1.*]] = internal constant { [[STRUCT_A]], [[STRUCT_A]], [8 x i8], [[STRUCT_A]] } { [[STRUCT_A]] { i8 2, double 2.000000e+00 }, [[STRUCT_A]] { i8 2, double 2.000000e+00 }, [8 x i8] {{.*}}, [[STRUCT_A]] zeroinitializer }, align 8
-// CIR-DAG: cir.global "private" constant internal dso_local @_ZL2d1 = #cir.const_record<{#cir.const_record<{#cir.int<2> : !s8i, #cir.fp<2.000000e+00> : !cir.double}> : ![[STRUCT_A]], #cir.const_record<{#cir.int<2> : !s8i, #cir.fp<2.000000e+00> : !cir.double}> : ![[STRUCT_A]], #cir.int<0> : !u8i, #cir.zero : ![[STRUCT_A]]}> : !rec_D {alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant internal dso_local @_ZL2d1 = #cir.const_record<{#cir.const_record<{#cir.int<2> : !s8i, #cir.fp<2.000000e+00> : !cir.double}> : ![[STRUCT_A]], #cir.const_record<{#cir.int<2> : !s8i, #cir.fp<2.000000e+00> : !cir.double}> : ![[STRUCT_A]], #cir.int<0> : !u8i, #cir.zero : ![[STRUCT_A]]}> : !rec_D align(8)
 constexpr D d1(A(2, 2));
 // LLVM-DAG: [[ARR1:@.*arr1.*]] = internal constant [3 x i32] [i32 1, i32 2, i32 0], align 4
-// CIR-DAG: cir.global "private" constant internal dso_local @_ZL4arr1 = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i], trailing_zeros> : !cir.array<!s32i x 3> {alignment = 4 : i64}
+// CIR-DAG: cir.global "private" constant internal dso_local @_ZL4arr1 = #cir.const_array<[#cir.int<1> : !s32i, #cir.int<2> : !s32i], trailing_zeros> : !cir.array<!s32i x 3> align(4)
 constexpr int arr1[3](1, 2);
 // LLVM-DAG: [[ARR4:@.*arr4.*]] = internal constant [1 x i32] [i32 1], align 4
-// CIR-DAG: cir.global "private" constant internal dso_local @_ZL4arr4 = #cir.const_array<[#cir.int<1> : !s32i]> : !cir.array<!s32i x 1> {alignment = 4 : i64}
+// CIR-DAG: cir.global "private" constant internal dso_local @_ZL4arr4 = #cir.const_array<[#cir.int<1> : !s32i]> : !cir.array<!s32i x 1> align(4)
 constexpr int arr4[](1);
 // LLVM-DAG: [[ARR5:@.*arr5.*]] = internal constant [2 x i32] [i32 2, i32 0], align 4
-// CIR-DAG: cir.global "private" constant internal dso_local @_ZL4arr5 = #cir.const_array<[#cir.int<2> : !s32i], trailing_zeros> : !cir.array<!s32i x 2> {alignment = 4 : i64}
+// CIR-DAG: cir.global "private" constant internal dso_local @_ZL4arr5 = #cir.const_array<[#cir.int<2> : !s32i], trailing_zeros> : !cir.array<!s32i x 2> align(4)
 constexpr int arr5[2](2);
 
 // CIR reads the coerced return out of a fresh slot it copies the record into,

diff  --git a/clang/test/CIR/CodeGen/pointer-to-data-member-indirect-field.cpp b/clang/test/CIR/CodeGen/pointer-to-data-member-indirect-field.cpp
index c4917344260f8..658ced6a07efc 100644
--- a/clang/test/CIR/CodeGen/pointer-to-data-member-indirect-field.cpp
+++ b/clang/test/CIR/CodeGen/pointer-to-data-member-indirect-field.cpp
@@ -38,8 +38,8 @@ int B::*pt_nested_anon_second = &B::e;
 // LLVM: @pt_nested_anon_second = global i64 8
 
 static union { int gx; float gy; };
-// CIR-BEFORE: cir.global "private" internal dso_local @_Z2gx = #cir.zero : !rec_anon2E3 {alignment = 4 : i64}
-// CIR-AFTER: cir.global "private" internal dso_local @_Z2gx = #cir.zero : !rec_anon2E3 {alignment = 4 : i64}
+// CIR-BEFORE: cir.global "private" internal dso_local @_Z2gx = #cir.zero : !rec_anon2E3 align(4)
+// CIR-AFTER: cir.global "private" internal dso_local @_Z2gx = #cir.zero : !rec_anon2E3 align(4)
 // LLVM: @_Z2gx = internal global %union.anon{{.*}} zeroinitializer, align 4
 
 int test_use(A &a, int A::*member) {

diff  --git a/clang/test/CIR/CodeGen/pointer-width-32bit.cpp b/clang/test/CIR/CodeGen/pointer-width-32bit.cpp
index 6715c5680ce24..6c30a4beb56f2 100644
--- a/clang/test/CIR/CodeGen/pointer-width-32bit.cpp
+++ b/clang/test/CIR/CodeGen/pointer-width-32bit.cpp
@@ -41,9 +41,9 @@ M m;
 // already a 32-bit integer here.
 // CIR-DAG: !rec_M = !cir.struct<"M" {data !s32i, data !s32i}>
 // CIR-DAG: !cir.ptr<!cir.void> = #cir.ptr_spec<size = 32, abi = 32, preferred = 32, index = 32>
-// CIR: cir.global external @s = #cir.zero : !rec_S {alignment = 4 : i64}
-// CIR: cir.global external @m = #cir.const_record<{#cir.int<-1> : !s32i, #cir.int<0> : !s32i}> : !rec_M {alignment = 4 : i64}
-// CIR: cir.global{{.*}}@_ZTV1A = #cir.vtable<{{.*}}{alignment = 4 : i64}
+// CIR: cir.global external @s = #cir.zero : !rec_S align(4)
+// CIR: cir.global external @m = #cir.const_record<{#cir.int<-1> : !s32i, #cir.int<0> : !s32i}> : !rec_M align(4)
+// CIR: cir.global{{.*}}@_ZTV1A = #cir.vtable<{{.*}}align(4)
 
 // LLVM: @s = global %struct.S zeroinitializer, align 4
 // LLVM: @m = global %struct.M { i32 -1, i32 0 }, align 4

diff  --git a/clang/test/CIR/CodeGen/pragma-fenv_access.c b/clang/test/CIR/CodeGen/pragma-fenv_access.c
index cc2eaebdc085e..2f422a81e70ab 100644
--- a/clang/test/CIR/CodeGen/pragma-fenv_access.c
+++ b/clang/test/CIR/CodeGen/pragma-fenv_access.c
@@ -75,37 +75,37 @@ void test_cmdline_defaults(float x, float y, float z, int i, double d) {
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR-STRICT: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fadd {{.*}} : !cir.float loc
-// CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: fadd float
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.ignore")
   sf = x - y;
-// CIR-STRICT: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fsub {{.*}} : !cir.float loc
-// CIR-DEFAULT-RND: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: fsub float
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.ignore")
   sf = x * y;
-// CIR-STRICT: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fmul {{.*}} : !cir.float loc
-// CIR-DEFAULT-RND: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: fmul float
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.ignore")
   sf = x / y;
-// CIR-STRICT: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fdiv {{.*}} : !cir.float loc
-// CIR-DEFAULT-RND: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: fdiv float
@@ -114,91 +114,91 @@ void test_cmdline_defaults(float x, float y, float z, int i, double d) {
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR-STRICT: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cmp lt {{.*}} : !cir.float
-// CIR-DEFAULT-RND: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: fcmp olt float
 // LLVM-DEFAULT-RND: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.ignore")
   sf = (float)i;
-// CIR-STRICT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float
-// CIR-DEFAULT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: sitofp i32 {{.*}} to float
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.ignore")
   si = (int)x;
-// CIR-STRICT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i
-// CIR-DEFAULT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.strict")
 // LLVM-DEFAULT: fptosi float {{.*}} to i32
 // LLVM-DEFAULT-RND: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.ignore")
   sd = (double)x;
-// CIR-STRICT: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cast floating {{.*}} : !cir.float -> !cir.double
-// CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.strict")
 // LLVM-DEFAULT: fpext float {{.*}} to double
 // LLVM-DEFAULT-RND: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.ignore")
   sf = (float)d;
-// CIR-STRICT: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cast floating {{.*}} : !cir.double -> !cir.float
-// CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: fptrunc double {{.*}} to float
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.ignore")
   sf = __builtin_sqrtf(x);
-// CIR-STRICT: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.sqrt {{.*}} : !cir.float loc
-// CIR-DEFAULT-RND: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.sqrt.f32
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.ignore")
   sf = __builtin_powf(x, y);
-// CIR-STRICT: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.pow {{.*}} : !cir.float loc
-// CIR-DEFAULT-RND: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.pow.f32
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.ignore")
   sf = __builtin_fmaf(x, y, z);
-// CIR-STRICT: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fma {{.*}} : !cir.float loc
-// CIR-DEFAULT-RND: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.fma.f32
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.ignore")
   sl = __builtin_lroundf(x);
-// CIR-STRICT: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.lround {{.*}} : !cir.float -> !s64i
-// CIR-DEFAULT-RND: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call i64 @llvm.lround.i64.f32
 // LLVM-DEFAULT-RND: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.ignore")
   sf = __builtin_fmodf(x, y);
-// CIR-STRICT: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fmod {{.*}} : !cir.float loc
-// CIR-DEFAULT-RND: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>}
+// CIR-DEFAULT-RND: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: frem float
@@ -216,52 +216,52 @@ void test_global_fenv_access_on(float x, float y, float z, int i, double d) {
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x - y;
-// CIR: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x * y;
-// CIR: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x / y;
-// CIR: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = -x;
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.strict")
   sf = (float)i;
-// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   si = (int)x;
-// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.strict")
   sd = (double)x;
-// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = (float)d;
-// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_sqrtf(x);
-// CIR: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_powf(x, y);
-// CIR: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_fmaf(x, y, z);
-// CIR: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sl = __builtin_lroundf(x);
-// CIR: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = __builtin_fmodf(x, y);
-// CIR: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 }
 
@@ -276,52 +276,52 @@ void test_except_off_fenv_access_off(float x, float y, float z, int i, double d)
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = x - y;
-// CIR: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = x * y;
-// CIR: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = x / y;
-// CIR: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = -x;
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.ignore")
   sf = (float)i;
-// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   si = (int)x;
-// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.ignore")
   sd = (double)x;
-// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.ignore")
   sf = (float)d;
-// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = __builtin_sqrtf(x);
-// CIR: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = __builtin_powf(x, y);
-// CIR: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = __builtin_fmaf(x, y, z);
-// CIR: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sl = __builtin_lroundf(x);
-// CIR: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.ignore")
   sf = __builtin_fmodf(x, y);
-// CIR: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
 }
 
@@ -334,52 +334,52 @@ void test_fenv_access_on_after_local_off(float x, float y, float z, int i, doubl
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x - y;
-// CIR: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x * y;
-// CIR: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x / y;
-// CIR: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = -x;
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.strict")
   sf = (float)i;
-// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   si = (int)x;
-// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.strict")
   sd = (double)x;
-// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = (float)d;
-// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_sqrtf(x);
-// CIR: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_powf(x, y);
-// CIR: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_fmaf(x, y, z);
-// CIR: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sl = __builtin_lroundf(x);
-// CIR: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = __builtin_fmodf(x, y);
-// CIR: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 }
 
@@ -395,8 +395,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR-STRICT: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fadd {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -404,8 +404,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // LLVM-DEFAULT: fadd float
 // LLVM-DEFAULT-RND: fadd float
   sf = x - y;
-// CIR-STRICT: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fsub {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fsub {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -413,8 +413,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // LLVM-DEFAULT: fsub float
 // LLVM-DEFAULT-RND: fsub float
   sf = x * y;
-// CIR-STRICT: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fmul {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fmul {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -422,8 +422,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // LLVM-DEFAULT: fmul float
 // LLVM-DEFAULT-RND: fmul float
   sf = x / y;
-// CIR-STRICT: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fdiv {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fdiv {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -434,8 +434,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR-STRICT: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cmp lt {{.*}} : !cir.float
 // CIR-DEFAULT-RND: cir.cmp lt {{.*}} : !cir.float
 // LLVM-STRICT: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.ignore")
@@ -443,8 +443,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // LLVM-DEFAULT: fcmp olt float
 // LLVM-DEFAULT-RND: fcmp olt float
   sf = (float)i;
-// CIR-STRICT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float
 // CIR-DEFAULT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float
 // LLVM-STRICT: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -452,8 +452,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // LLVM-DEFAULT: sitofp i32 {{.*}} to float
 // LLVM-DEFAULT-RND: sitofp i32 {{.*}} to float
   si = (int)x;
-// CIR-STRICT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i
 // CIR-DEFAULT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i
 // LLVM-STRICT: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.ignore")
@@ -461,8 +461,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // LLVM-DEFAULT: fptosi float {{.*}} to i32
 // LLVM-DEFAULT-RND: fptosi float {{.*}} to i32
   sd = (double)x;
-// CIR-STRICT: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cast floating {{.*}} : !cir.float -> !cir.double
 // CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double
 // LLVM-STRICT: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.ignore")
@@ -470,8 +470,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // LLVM-DEFAULT: fpext float {{.*}} to double
 // LLVM-DEFAULT-RND: fpext float {{.*}} to double
   sf = (float)d;
-// CIR-STRICT: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cast floating {{.*}} : !cir.double -> !cir.float
 // CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float
 // LLVM-STRICT: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -479,8 +479,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // LLVM-DEFAULT: fptrunc double {{.*}} to float
 // LLVM-DEFAULT-RND: fptrunc double {{.*}} to float
   sf = __builtin_sqrtf(x);
-// CIR-STRICT: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.sqrt {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.sqrt {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -488,8 +488,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // LLVM-DEFAULT: call float @llvm.sqrt.f32
 // LLVM-DEFAULT-RND: call float @llvm.sqrt.f32
   sf = __builtin_powf(x, y);
-// CIR-STRICT: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.pow {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.pow {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -497,8 +497,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // LLVM-DEFAULT: call float @llvm.pow.f32
 // LLVM-DEFAULT-RND: call float @llvm.pow.f32
   sf = __builtin_fmaf(x, y, z);
-// CIR-STRICT: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fma {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fma {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -506,8 +506,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // LLVM-DEFAULT: call float @llvm.fma.f32
 // LLVM-DEFAULT-RND: call float @llvm.fma.f32
   sl = __builtin_lroundf(x);
-// CIR-STRICT: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.lround {{.*}} : !cir.float -> !s64i
 // CIR-DEFAULT-RND: cir.lround {{.*}} : !cir.float -> !s64i
 // LLVM-STRICT: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.ignore")
@@ -515,8 +515,8 @@ void test_float_control_except_off(float x, float y, float z, int i, double d) {
 // LLVM-DEFAULT: call i64 @llvm.lround.i64.f32
 // LLVM-DEFAULT-RND: call i64 @llvm.lround.i64.f32
   sf = __builtin_fmodf(x, y);
-// CIR-STRICT: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fmod {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fmod {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -535,52 +535,52 @@ void test_float_control_except_on(float x, float y, float z, int i, double d) {
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = x - y;
-// CIR: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = x * y;
-// CIR: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = x / y;
-// CIR: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = -x;
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.strict")
   sf = (float)i;
-// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   si = (int)x;
-// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.strict")
   sd = (double)x;
-// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = (float)d;
-// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = __builtin_sqrtf(x);
-// CIR: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = __builtin_powf(x, y);
-// CIR: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = __builtin_fmaf(x, y, z);
-// CIR: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sl = __builtin_lroundf(x);
-// CIR: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = __builtin_fmodf(x, y);
-// CIR: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 }
 
@@ -594,52 +594,52 @@ void test_local_fenv_access_on(float x, float y, float z, int i, double d) {
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x - y;
-// CIR: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x * y;
-// CIR: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x / y;
-// CIR: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = -x;
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.strict")
   sf = (float)i;
-// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   si = (int)x;
-// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.strict")
   sd = (double)x;
-// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = (float)d;
-// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_sqrtf(x);
-// CIR: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_powf(x, y);
-// CIR: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_fmaf(x, y, z);
-// CIR: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sl = __builtin_lroundf(x);
-// CIR: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = __builtin_fmodf(x, y);
-// CIR: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 }
 
@@ -653,8 +653,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR-STRICT: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fadd {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -662,8 +662,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // LLVM-DEFAULT: fadd float
 // LLVM-DEFAULT-RND: fadd float
   sf = x - y;
-// CIR-STRICT: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fsub {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fsub {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -671,8 +671,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // LLVM-DEFAULT: fsub float
 // LLVM-DEFAULT-RND: fsub float
   sf = x * y;
-// CIR-STRICT: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fmul {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fmul {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -680,8 +680,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // LLVM-DEFAULT: fmul float
 // LLVM-DEFAULT-RND: fmul float
   sf = x / y;
-// CIR-STRICT: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fdiv {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fdiv {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -692,8 +692,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR-STRICT: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cmp lt {{.*}} : !cir.float
 // CIR-DEFAULT-RND: cir.cmp lt {{.*}} : !cir.float
 // LLVM-STRICT: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.ignore")
@@ -701,8 +701,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // LLVM-DEFAULT: fcmp olt float
 // LLVM-DEFAULT-RND: fcmp olt float
   sf = (float)i;
-// CIR-STRICT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float
 // CIR-DEFAULT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float
 // LLVM-STRICT: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -710,8 +710,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // LLVM-DEFAULT: sitofp i32 {{.*}} to float
 // LLVM-DEFAULT-RND: sitofp i32 {{.*}} to float
   si = (int)x;
-// CIR-STRICT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i
 // CIR-DEFAULT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i
 // LLVM-STRICT: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.ignore")
@@ -719,8 +719,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // LLVM-DEFAULT: fptosi float {{.*}} to i32
 // LLVM-DEFAULT-RND: fptosi float {{.*}} to i32
   sd = (double)x;
-// CIR-STRICT: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cast floating {{.*}} : !cir.float -> !cir.double
 // CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double
 // LLVM-STRICT: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.ignore")
@@ -728,8 +728,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // LLVM-DEFAULT: fpext float {{.*}} to double
 // LLVM-DEFAULT-RND: fpext float {{.*}} to double
   sf = (float)d;
-// CIR-STRICT: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cast floating {{.*}} : !cir.double -> !cir.float
 // CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float
 // LLVM-STRICT: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -737,8 +737,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // LLVM-DEFAULT: fptrunc double {{.*}} to float
 // LLVM-DEFAULT-RND: fptrunc double {{.*}} to float
   sf = __builtin_sqrtf(x);
-// CIR-STRICT: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.sqrt {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.sqrt {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -746,8 +746,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // LLVM-DEFAULT: call float @llvm.sqrt.f32
 // LLVM-DEFAULT-RND: call float @llvm.sqrt.f32
   sf = __builtin_powf(x, y);
-// CIR-STRICT: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.pow {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.pow {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -755,8 +755,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // LLVM-DEFAULT: call float @llvm.pow.f32
 // LLVM-DEFAULT-RND: call float @llvm.pow.f32
   sf = __builtin_fmaf(x, y, z);
-// CIR-STRICT: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fma {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fma {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -764,8 +764,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // LLVM-DEFAULT: call float @llvm.fma.f32
 // LLVM-DEFAULT-RND: call float @llvm.fma.f32
   sl = __builtin_lroundf(x);
-// CIR-STRICT: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.lround {{.*}} : !cir.float -> !s64i
 // CIR-DEFAULT-RND: cir.lround {{.*}} : !cir.float -> !s64i
 // LLVM-STRICT: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.ignore")
@@ -773,8 +773,8 @@ void test_float_control_except_off_after_on(float x, float y, float z, int i, do
 // LLVM-DEFAULT: call i64 @llvm.lround.i64.f32
 // LLVM-DEFAULT-RND: call i64 @llvm.lround.i64.f32
   sf = __builtin_fmodf(x, y);
-// CIR-STRICT: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fmod {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fmod {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -790,7 +790,7 @@ void test_scoped_fenv_access_on(float x, float y) {
   if (x) {
 #pragma STDC FENV_ACCESS ON
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   }
 }
@@ -806,52 +806,52 @@ void test_fenv_round_upward(float x, float y, float z, int i, double d) {
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
   sf = x - y;
-// CIR: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
   sf = x * y;
-// CIR: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
   sf = x / y;
-// CIR: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
   sf = -x;
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.strict")
   sf = (float)i;
-// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
   si = (int)x;
-// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.strict")
   sd = (double)x;
-// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = (float)d;
-// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
   sf = __builtin_sqrtf(x);
-// CIR: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
   sf = __builtin_powf(x, y);
-// CIR: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
   sf = __builtin_fmaf(x, y, z);
-// CIR: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
   sl = __builtin_lroundf(x);
-// CIR: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = __builtin_fmodf(x, y);
-// CIR: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
 }
 
@@ -866,52 +866,52 @@ void test_fenv_round_tonearest(float x, float y, float z, int i, double d) {
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = x - y;
-// CIR: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = x * y;
-// CIR: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = x / y;
-// CIR: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = -x;
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.strict")
   sf = (float)i;
-// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   si = (int)x;
-// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.strict")
   sd = (double)x;
-// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = (float)d;
-// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = __builtin_sqrtf(x);
-// CIR: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = __builtin_powf(x, y);
-// CIR: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sf = __builtin_fmaf(x, y, z);
-// CIR: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   sl = __builtin_lroundf(x);
-// CIR: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = __builtin_fmodf(x, y);
-// CIR: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 }
 
@@ -927,52 +927,52 @@ void test_fenv_round_tonearest_except_ignore(float x, float y, float z, int i, d
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = x - y;
-// CIR: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = x * y;
-// CIR: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = x / y;
-// CIR: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = -x;
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.ignore")
   sf = (float)i;
-// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   si = (int)x;
-// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.ignore")
   sd = (double)x;
-// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.ignore")
   sf = (float)d;
-// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = __builtin_sqrtf(x);
-// CIR: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = __builtin_powf(x, y);
-// CIR: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sf = __builtin_fmaf(x, y, z);
-// CIR: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
   sl = __builtin_lroundf(x);
-// CIR: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.ignore")
   sf = __builtin_fmodf(x, y);
-// CIR: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
 }
 
@@ -988,8 +988,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR-STRICT: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fadd {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -997,8 +997,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // LLVM-DEFAULT: fadd float
 // LLVM-DEFAULT-RND: fadd float
   sf = x - y;
-// CIR-STRICT: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fsub {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fsub {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -1006,8 +1006,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // LLVM-DEFAULT: fsub float
 // LLVM-DEFAULT-RND: fsub float
   sf = x * y;
-// CIR-STRICT: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fmul {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fmul {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -1015,8 +1015,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // LLVM-DEFAULT: fmul float
 // LLVM-DEFAULT-RND: fmul float
   sf = x / y;
-// CIR-STRICT: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fdiv {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fdiv {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -1027,8 +1027,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR-STRICT: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cmp lt {{.*}} : !cir.float
 // CIR-DEFAULT-RND: cir.cmp lt {{.*}} : !cir.float
 // LLVM-STRICT: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.ignore")
@@ -1036,8 +1036,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // LLVM-DEFAULT: fcmp olt float
 // LLVM-DEFAULT-RND: fcmp olt float
   sf = (float)i;
-// CIR-STRICT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float
 // CIR-DEFAULT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float
 // LLVM-STRICT: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -1045,8 +1045,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // LLVM-DEFAULT: sitofp i32 {{.*}} to float
 // LLVM-DEFAULT-RND: sitofp i32 {{.*}} to float
   si = (int)x;
-// CIR-STRICT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i
 // CIR-DEFAULT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i
 // LLVM-STRICT: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.ignore")
@@ -1054,8 +1054,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // LLVM-DEFAULT: fptosi float {{.*}} to i32
 // LLVM-DEFAULT-RND: fptosi float {{.*}} to i32
   sd = (double)x;
-// CIR-STRICT: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cast floating {{.*}} : !cir.float -> !cir.double
 // CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double
 // LLVM-STRICT: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.ignore")
@@ -1063,8 +1063,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // LLVM-DEFAULT: fpext float {{.*}} to double
 // LLVM-DEFAULT-RND: fpext float {{.*}} to double
   sf = (float)d;
-// CIR-STRICT: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.cast floating {{.*}} : !cir.double -> !cir.float
 // CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float
 // LLVM-STRICT: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -1072,8 +1072,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // LLVM-DEFAULT: fptrunc double {{.*}} to float
 // LLVM-DEFAULT-RND: fptrunc double {{.*}} to float
   sf = __builtin_sqrtf(x);
-// CIR-STRICT: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.sqrt {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.sqrt {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -1081,8 +1081,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // LLVM-DEFAULT: call float @llvm.sqrt.f32
 // LLVM-DEFAULT-RND: call float @llvm.sqrt.f32
   sf = __builtin_powf(x, y);
-// CIR-STRICT: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.pow {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.pow {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -1090,8 +1090,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // LLVM-DEFAULT: call float @llvm.pow.f32
 // LLVM-DEFAULT-RND: call float @llvm.pow.f32
   sf = __builtin_fmaf(x, y, z);
-// CIR-STRICT: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fma {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fma {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -1099,8 +1099,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // LLVM-DEFAULT: call float @llvm.fma.f32
 // LLVM-DEFAULT-RND: call float @llvm.fma.f32
   sl = __builtin_lroundf(x);
-// CIR-STRICT: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.lround {{.*}} : !cir.float -> !s64i
 // CIR-DEFAULT-RND: cir.lround {{.*}} : !cir.float -> !s64i
 // LLVM-STRICT: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.ignore")
@@ -1108,8 +1108,8 @@ void test_fenv_round_tonearest_except_ignore_fenv_off(float x, float y, float z,
 // LLVM-DEFAULT: call i64 @llvm.lround.i64.f32
 // LLVM-DEFAULT-RND: call i64 @llvm.lround.i64.f32
   sf = __builtin_fmodf(x, y);
-// CIR-STRICT: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-STRICT-RND: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-STRICT-RND: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // CIR-DEFAULT: cir.fmod {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fmod {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -1129,52 +1129,52 @@ void test_fp_exceptions_maytrap(float x, float y, float z, int i, double d) {
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
   sf = x - y;
-// CIR: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
   sf = x * y;
-// CIR: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
   sf = x / y;
-// CIR: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
   sf = -x;
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.maytrap")
   sf = (float)i;
-// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
   si = (int)x;
-// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.maytrap")
   sd = (double)x;
-// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.maytrap")
   sf = (float)d;
-// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
   sf = __builtin_sqrtf(x);
-// CIR: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
   sf = __builtin_powf(x, y);
-// CIR: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
   sf = __builtin_fmaf(x, y, z);
-// CIR: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
   sl = __builtin_lroundf(x);
-// CIR: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.maytrap")
   sf = __builtin_fmodf(x, y);
-// CIR: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>}
+// CIR: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.maytrap")
 }
 
@@ -1190,52 +1190,52 @@ void test_fp_exceptions_maytrap_round_upward(float x, float y, float z, int i, d
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
   sf = x - y;
-// CIR: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
   sf = x * y;
-// CIR: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
   sf = x / y;
-// CIR: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
   sf = -x;
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.maytrap")
   sf = (float)i;
-// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
   si = (int)x;
-// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.maytrap")
   sd = (double)x;
-// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.maytrap")
   sf = (float)d;
-// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
   sf = __builtin_sqrtf(x);
-// CIR: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
   sf = __builtin_powf(x, y);
-// CIR: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
   sf = __builtin_fmaf(x, y, z);
-// CIR: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
   sl = __builtin_lroundf(x);
-// CIR: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.maytrap")
   sf = __builtin_fmodf(x, y);
-// CIR: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>}
+// CIR: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = upward, except_mode = unknown, strict_except = false>
 // LLVM: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.upward", metadata !"fpexcept.maytrap")
 }
 
@@ -1245,15 +1245,15 @@ void test_nested_fenv_access_off(float x, float y) {
 // LLVM-LABEL: define {{.*}}@test_nested_fenv_access_off(
   float sf;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   {
 #pragma STDC FENV_ACCESS OFF
   sf = x + y;
-// CIR-STRICT: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-DEFAULT: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-DEFAULT: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -1268,15 +1268,15 @@ void test_fenv_round_towardzero_nested_fenv_off(float x, float y) {
 // LLVM-LABEL: define {{.*}}@test_fenv_round_towardzero_nested_fenv_off(
   float sf;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upwardzero, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = upwardzero, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.towardzero", metadata !"fpexcept.strict")
   {
 #pragma STDC FENV_ACCESS OFF
   sf = x + y;
-// CIR-STRICT: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upwardzero, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upwardzero, except_mode = unknown, strict_except = true>}
-// CIR-DEFAULT: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upwardzero, except_mode = masked, strict_except = false>}
-// CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upwardzero, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = upwardzero, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = upwardzero, except_mode = unknown, strict_except = true>
+// CIR-DEFAULT: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = upwardzero, except_mode = masked, strict_except = false>
+// CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = upwardzero, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.towardzero", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.towardzero", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.towardzero", metadata !"fpexcept.ignore")
@@ -1289,10 +1289,10 @@ void test_nested_fenv_round_then_fenv_access(float x, float y) {
 // LLVM-LABEL: define {{.*}}@test_nested_fenv_round_then_fenv_access(
   float sf;
   sf = x + y;
-// CIR-STRICT: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-DEFAULT: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
-// CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>}
+// CIR-STRICT: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-DEFAULT: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
+// CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = masked, strict_except = false>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.ignore")
@@ -1301,13 +1301,13 @@ void test_nested_fenv_round_then_fenv_access(float x, float y) {
 #pragma STDC FENV_ROUND FE_TONEAREST
 #pragma STDC FENV_ACCESS ON
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
   }
   {
 #pragma STDC FENV_ACCESS ON
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   }
 }
@@ -1323,52 +1323,52 @@ void test_fenv_round_dynamic_with_fenv_access(float x, float y, float z, int i,
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x - y;
-// CIR: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x * y;
-// CIR: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x / y;
-// CIR: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = -x;
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.strict")
   sf = (float)i;
-// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   si = (int)x;
-// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.strict")
   sd = (double)x;
-// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = (float)d;
-// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_sqrtf(x);
-// CIR: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_powf(x, y);
-// CIR: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_fmaf(x, y, z);
-// CIR: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sl = __builtin_lroundf(x);
-// CIR: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = __builtin_fmodf(x, y);
-// CIR: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 }
 
@@ -1382,8 +1382,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR-STRICT: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fadd {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1391,8 +1391,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // LLVM-DEFAULT: fadd float
 // LLVM-DEFAULT-RND: fadd float
   sf = x - y;
-// CIR-STRICT: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fsub {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fsub {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1400,8 +1400,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // LLVM-DEFAULT: fsub float
 // LLVM-DEFAULT-RND: fsub float
   sf = x * y;
-// CIR-STRICT: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fmul {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fmul {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1409,8 +1409,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // LLVM-DEFAULT: fmul float
 // LLVM-DEFAULT-RND: fmul float
   sf = x / y;
-// CIR-STRICT: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fdiv {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fdiv {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1421,8 +1421,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR-STRICT: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cmp lt {{.*}} : !cir.float
 // CIR-DEFAULT-RND: cir.cmp lt {{.*}} : !cir.float
 // LLVM-STRICT: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.strict")
@@ -1430,8 +1430,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // LLVM-DEFAULT: fcmp olt float
 // LLVM-DEFAULT-RND: fcmp olt float
   sf = (float)i;
-// CIR-STRICT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float
 // CIR-DEFAULT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float
 // LLVM-STRICT: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1439,8 +1439,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // LLVM-DEFAULT: sitofp i32 {{.*}} to float
 // LLVM-DEFAULT-RND: sitofp i32 {{.*}} to float
   si = (int)x;
-// CIR-STRICT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i
 // CIR-DEFAULT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i
 // LLVM-STRICT: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.strict")
@@ -1448,8 +1448,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // LLVM-DEFAULT: fptosi float {{.*}} to i32
 // LLVM-DEFAULT-RND: fptosi float {{.*}} to i32
   sd = (double)x;
-// CIR-STRICT: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cast floating {{.*}} : !cir.float -> !cir.double
 // CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double
 // LLVM-STRICT: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.strict")
@@ -1457,8 +1457,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // LLVM-DEFAULT: fpext float {{.*}} to double
 // LLVM-DEFAULT-RND: fpext float {{.*}} to double
   sf = (float)d;
-// CIR-STRICT: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cast floating {{.*}} : !cir.double -> !cir.float
 // CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float
 // LLVM-STRICT: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1466,8 +1466,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // LLVM-DEFAULT: fptrunc double {{.*}} to float
 // LLVM-DEFAULT-RND: fptrunc double {{.*}} to float
   sf = __builtin_sqrtf(x);
-// CIR-STRICT: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.sqrt {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.sqrt {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1475,8 +1475,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // LLVM-DEFAULT: call float @llvm.sqrt.f32
 // LLVM-DEFAULT-RND: call float @llvm.sqrt.f32
   sf = __builtin_powf(x, y);
-// CIR-STRICT: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.pow {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.pow {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1484,8 +1484,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // LLVM-DEFAULT: call float @llvm.pow.f32
 // LLVM-DEFAULT-RND: call float @llvm.pow.f32
   sf = __builtin_fmaf(x, y, z);
-// CIR-STRICT: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fma {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fma {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1493,8 +1493,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // LLVM-DEFAULT: call float @llvm.fma.f32
 // LLVM-DEFAULT-RND: call float @llvm.fma.f32
   sl = __builtin_lroundf(x);
-// CIR-STRICT: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.lround {{.*}} : !cir.float -> !s64i
 // CIR-DEFAULT-RND: cir.lround {{.*}} : !cir.float -> !s64i
 // LLVM-STRICT: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.strict")
@@ -1502,8 +1502,8 @@ void test_fenv_round_dynamic_without_fenv_access(float x, float y, float z, int
 // LLVM-DEFAULT: call i64 @llvm.lround.i64.f32
 // LLVM-DEFAULT-RND: call i64 @llvm.lround.i64.f32
   sf = __builtin_fmodf(x, y);
-// CIR-STRICT: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fmod {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fmod {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1522,52 +1522,52 @@ void test_file_scope_fenv_access_on(float x, float y, float z, int i, double d)
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x - y;
-// CIR: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x * y;
-// CIR: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = x / y;
-// CIR: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = -x;
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.strict")
   sf = (float)i;
-// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   si = (int)x;
-// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.strict")
   sd = (double)x;
-// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = (float)d;
-// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_sqrtf(x);
-// CIR: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_powf(x, y);
-// CIR: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sf = __builtin_fmaf(x, y, z);
-// CIR: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-STRICT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 // LLVM-DEFAULT-RND: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
   sl = __builtin_lroundf(x);
-// CIR: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.strict")
   sf = __builtin_fmodf(x, y);
-// CIR: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>}
+// CIR: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown, except_mode = unknown, strict_except = true>
 // LLVM: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.dynamic", metadata !"fpexcept.strict")
 }
 
@@ -1581,8 +1581,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
   long sl;
   _Bool sb;
   sf = x + y;
-// CIR-STRICT: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fadd {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fadd {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fadd {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fadd.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1590,8 +1590,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // LLVM-DEFAULT: fadd float
 // LLVM-DEFAULT-RND: fadd float
   sf = x - y;
-// CIR-STRICT: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fsub {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fsub {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fsub {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fsub {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fsub.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1599,8 +1599,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // LLVM-DEFAULT: fsub float
 // LLVM-DEFAULT-RND: fsub float
   sf = x * y;
-// CIR-STRICT: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fmul {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fmul {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fmul {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fmul {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fmul.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1608,8 +1608,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // LLVM-DEFAULT: fmul float
 // LLVM-DEFAULT-RND: fmul float
   sf = x / y;
-// CIR-STRICT: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fdiv {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fdiv {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fdiv {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fdiv {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fdiv.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1620,8 +1620,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // CIR: cir.fneg {{.*}} : !cir.float loc
 // LLVM: fneg float
   sb = x < y;
-// CIR-STRICT: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cmp lt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cmp lt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cmp lt {{.*}} : !cir.float
 // CIR-DEFAULT-RND: cir.cmp lt {{.*}} : !cir.float
 // LLVM-STRICT: call i1 @llvm.experimental.constrained.fcmps.f32({{.*}}, metadata !"olt", metadata !"fpexcept.strict")
@@ -1629,8 +1629,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // LLVM-DEFAULT: fcmp olt float
 // LLVM-DEFAULT-RND: fcmp olt float
   sf = (float)i;
-// CIR-STRICT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cast int_to_float {{.*}} : !s32i -> !cir.float
 // CIR-DEFAULT-RND: cir.cast int_to_float {{.*}} : !s32i -> !cir.float
 // LLVM-STRICT: call float @llvm.experimental.constrained.sitofp.f32.i32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1638,8 +1638,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // LLVM-DEFAULT: sitofp i32 {{.*}} to float
 // LLVM-DEFAULT-RND: sitofp i32 {{.*}} to float
   si = (int)x;
-// CIR-STRICT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cast float_to_int {{.*}} : !cir.float -> !s32i
 // CIR-DEFAULT-RND: cir.cast float_to_int {{.*}} : !cir.float -> !s32i
 // LLVM-STRICT: call i32 @llvm.experimental.constrained.fptosi.i32.f32({{.*}}, metadata !"fpexcept.strict")
@@ -1647,8 +1647,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // LLVM-DEFAULT: fptosi float {{.*}} to i32
 // LLVM-DEFAULT-RND: fptosi float {{.*}} to i32
   sd = (double)x;
-// CIR-STRICT: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cast floating {{.*}} : !cir.float -> !cir.double
 // CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.float -> !cir.double
 // LLVM-STRICT: call double @llvm.experimental.constrained.fpext.f64.f32({{.*}}, metadata !"fpexcept.strict")
@@ -1656,8 +1656,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // LLVM-DEFAULT: fpext float {{.*}} to double
 // LLVM-DEFAULT-RND: fpext float {{.*}} to double
   sf = (float)d;
-// CIR-STRICT: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.cast floating {{.*}} : !cir.double -> !cir.float
 // CIR-DEFAULT-RND: cir.cast floating {{.*}} : !cir.double -> !cir.float
 // LLVM-STRICT: call float @llvm.experimental.constrained.fptrunc.f32.f64({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1665,8 +1665,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // LLVM-DEFAULT: fptrunc double {{.*}} to float
 // LLVM-DEFAULT-RND: fptrunc double {{.*}} to float
   sf = __builtin_sqrtf(x);
-// CIR-STRICT: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.sqrt {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.sqrt {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.sqrt {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.sqrt {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.sqrt.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1674,8 +1674,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // LLVM-DEFAULT: call float @llvm.sqrt.f32
 // LLVM-DEFAULT-RND: call float @llvm.sqrt.f32
   sf = __builtin_powf(x, y);
-// CIR-STRICT: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.pow {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.pow {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.pow {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.pow {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.pow.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1683,8 +1683,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // LLVM-DEFAULT: call float @llvm.pow.f32
 // LLVM-DEFAULT-RND: call float @llvm.pow.f32
   sf = __builtin_fmaf(x, y, z);
-// CIR-STRICT: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fma {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fma {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fma {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fma {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.fma.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -1692,8 +1692,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // LLVM-DEFAULT: call float @llvm.fma.f32
 // LLVM-DEFAULT-RND: call float @llvm.fma.f32
   sl = __builtin_lroundf(x);
-// CIR-STRICT: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.lround {{.*}} : !cir.float -> !s64i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.lround {{.*}} : !cir.float -> !s64i fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.lround {{.*}} : !cir.float -> !s64i
 // CIR-DEFAULT-RND: cir.lround {{.*}} : !cir.float -> !s64i
 // LLVM-STRICT: call i64 @llvm.experimental.constrained.lround.i64.f32({{.*}}, metadata !"fpexcept.strict")
@@ -1701,8 +1701,8 @@ void test_file_scope_fenv_access_off(float x, float y, float z, int i, double d)
 // LLVM-DEFAULT: call i64 @llvm.lround.i64.f32
 // LLVM-DEFAULT-RND: call i64 @llvm.lround.i64.f32
   sf = __builtin_fmodf(x, y);
-// CIR-STRICT: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR-STRICT-RND: cir.fmod {{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR-STRICT: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR-STRICT-RND: cir.fmod {{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR-DEFAULT: cir.fmod {{.*}} : !cir.float loc
 // CIR-DEFAULT-RND: cir.fmod {{.*}} : !cir.float loc
 // LLVM-STRICT: call float @llvm.experimental.constrained.frem.f32({{.*}}, metadata !"round.tonearest", metadata !"fpexcept.strict")

diff  --git a/clang/test/CIR/CodeGen/predefined-expr.c b/clang/test/CIR/CodeGen/predefined-expr.c
index 8644717f187b8..a07591f78aa82 100644
--- a/clang/test/CIR/CodeGen/predefined-expr.c
+++ b/clang/test/CIR/CodeGen/predefined-expr.c
@@ -5,7 +5,7 @@
 // RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -emit-llvm -o %t.ll
 // RUN: FileCheck %s --input-file=%t.ll --check-prefix=OGCG
 
-// CIR: cir.global "private" internal dso_local @staticFuncName.name = #cir.global_view<@".str.4"> : !cir.ptr<!s8i> {alignment = 8 : i64} loc(#loc1)
+// CIR: cir.global "private" internal dso_local @staticFuncName.name = #cir.global_view<@".str.4"> : !cir.ptr<!s8i> align(8) loc(#loc1)
 // CIR: cir.global "private" constant cir_private dso_local @".str" = #cir.zero : !cir.array<!s8i x 1>
 // CIR: cir.global external @func = #cir.global_view<@".str"> : !cir.ptr<!s8i>
 // CIR: cir.global "private" constant cir_private dso_local @__func__.plainFunction = #cir.const_array<"plainFunction" : !cir.array<!s8i x 13>, trailing_zeros>

diff  --git a/clang/test/CIR/CodeGen/source-loc.cpp b/clang/test/CIR/CodeGen/source-loc.cpp
index f2b3c530564d1..b01965c65e79f 100644
--- a/clang/test/CIR/CodeGen/source-loc.cpp
+++ b/clang/test/CIR/CodeGen/source-loc.cpp
@@ -37,7 +37,7 @@ namespace std {
 // LLVM: @.constant = private constant %"struct.std::source_location::__impl" { ptr @.str, ptr @.str.1, i32 {{.*}}, i32 {{.*}} }
 // OGCG: @.constant = private unnamed_addr constant %"struct.std::source_location::__impl" { ptr @.str, ptr @.str.1, i32 {{.*}}, i32 {{.*}} }
 //
-// CIR: cir.global "private" constant cir_private dso_local @".str.2" = #cir.const_array<"void use2()" : !cir.array<!s8i x 11>, trailing_zeros> : !cir.array<!s8i x 12> {alignment = 1 : i64} loc(#loc1)
+// CIR: cir.global "private" constant cir_private dso_local @".str.2" = #cir.const_array<"void use2()" : !cir.array<!s8i x 11>, trailing_zeros> : !cir.array<!s8i x 12> align(1) loc(#loc1)
 // LLVM: @.str.2 = private constant [{{.*}} x i8] c"void use2
 // OGCG: @.str.2 = private unnamed_addr constant [{{.*}} x i8] c"void use2
 //

diff  --git a/clang/test/CIR/CodeGen/static-local-in-ctor.cpp b/clang/test/CIR/CodeGen/static-local-in-ctor.cpp
index 6056d3a2cbfe1..b5cdece0ebd28 100644
--- a/clang/test/CIR/CodeGen/static-local-in-ctor.cpp
+++ b/clang/test/CIR/CodeGen/static-local-in-ctor.cpp
@@ -24,13 +24,13 @@ void use() { Ctor c; Dtor d; }
 
 // Static local inside the constructor body.
 
-// CIR-DAG: cir.global linkonce_odr comdat @_ZZN4CtorC1EvE1x = #cir.int<42> : !s32i {alignment = 4 : i64}
+// CIR-DAG: cir.global linkonce_odr comdat @_ZZN4CtorC1EvE1x = #cir.int<42> : !s32i align(4)
 // LLVM-DAG: @_ZZN4CtorC1EvE1x = linkonce_odr global i32 42, comdat, align 4
 
 
 // Static local inside the destructor body.
 
-// CIR-DAG: cir.global linkonce_odr comdat @_ZZN4DtorD1EvE1y = #cir.int<7> : !s32i {alignment = 4 : i64}
+// CIR-DAG: cir.global linkonce_odr comdat @_ZZN4DtorD1EvE1y = #cir.int<7> : !s32i align(4)
 // LLVM-DAG: @_ZZN4DtorD1EvE1y = linkonce_odr global i32 7, comdat, align 4
 
 

diff  --git a/clang/test/CIR/CodeGen/static-local-info.cpp b/clang/test/CIR/CodeGen/static-local-info.cpp
index 2345703d8a875..deb4c13e8726d 100644
--- a/clang/test/CIR/CodeGen/static-local-info.cpp
+++ b/clang/test/CIR/CodeGen/static-local-info.cpp
@@ -25,9 +25,9 @@ int tls() {
 // The thread_local static local materializes a non-default TLS kind, alongside
 // the retained AST handle.
 // CHECK: @_ZZ3tlsvE1s
-// CHECK-SAME: ast = #cir.var.decl.ast
-// CHECK-SAME: static_local_info = #cir.static_local_info<local = true, tls = dynamic, is_inline = false, tsk = undeclared>
+// CHECK-SAME: ast(#cir.var.decl.ast)
+// CHECK-SAME: static_local_info<local = true, tls = dynamic, is_inline = false, tsk = undeclared>
 
 // CHECK: @_ZZ7regularvE1s
-// CHECK-SAME: ast = #cir.var.decl.ast
-// CHECK-SAME: static_local_info = #cir.static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>
+// CHECK-SAME: ast(#cir.var.decl.ast)
+// CHECK-SAME: static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>

diff  --git a/clang/test/CIR/CodeGen/tls-model.cpp b/clang/test/CIR/CodeGen/tls-model.cpp
index 36296b6951d24..20ee77b51eea9 100644
--- a/clang/test/CIR/CodeGen/tls-model.cpp
+++ b/clang/test/CIR/CodeGen/tls-model.cpp
@@ -47,14 +47,14 @@ struct T thread_local t1;
 
 // CIR-GD: module {{.*}} attributes 
 // CIR-GD-SAME: cir.default_tls_model = #cir.tls_model<tls_dyn>
-// CIR-GD-DAG: cir.global external @z1 = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-GD-DAG: cir.global external @z2 = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-GD-DAG: cir.global external tls_model = tls_dyn @x = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-GD-DAG: cir.global "private" internal tls_model = tls_dyn dso_local @_ZZ1fvE1y = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-GD-DAG: cir.global external tls_model = tls_init_exec @z = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-GD-DAG: cir.global external tls_model = tls_dyn tls_refs = <"_ZTW2s1", "_ZTH2s1"> @s1 = #cir.zero : !rec_S {alignment = 1 : i64, ast = #cir.var.decl.ast}
-// CIR-GD-DAG: cir.global external tls_model = tls_dyn tls_refs = <"_ZTW2t1", "_ZTH2t1"> @t1 = #cir.zero : !rec_T {alignment = 1 : i64, ast = #cir.var.decl.ast}
-// CIR-GD-DAG: cir.global internal tls_model = tls_dyn @__tls_guard = #cir.int<0> : !s8i {alignment = 1 : i64}
+// CIR-GD-DAG: cir.global external @z1 = #cir.int<0> : !s32i align(4)
+// CIR-GD-DAG: cir.global external @z2 = #cir.int<0> : !s32i align(4)
+// CIR-GD-DAG: cir.global external tls_model = tls_dyn @x = #cir.int<0> : !s32i align(4)
+// CIR-GD-DAG: cir.global "private" internal tls_model = tls_dyn dso_local @_ZZ1fvE1y = #cir.int<0> : !s32i align(4)
+// CIR-GD-DAG: cir.global external tls_model = tls_init_exec @z = #cir.int<0> : !s32i align(4)
+// CIR-GD-DAG: cir.global external tls_model = tls_dyn tls_refs = <"_ZTW2s1", "_ZTH2s1"> @s1 = #cir.zero : !rec_S align(1) ast(#cir.var.decl.ast)
+// CIR-GD-DAG: cir.global external tls_model = tls_dyn tls_refs = <"_ZTW2t1", "_ZTH2t1"> @t1 = #cir.zero : !rec_T align(1) ast(#cir.var.decl.ast)
+// CIR-GD-DAG: cir.global internal tls_model = tls_dyn @__tls_guard = #cir.int<0> : !s8i align(1)
 
 // LLVM-GD-DAG: @z1 ={{.*}} global i32 0
 // LLVM-GD-DAG: @z2 ={{.*}} global i32 0
@@ -71,14 +71,14 @@ struct T thread_local t1;
 
 // CIR-LD: module {{.*}} attributes 
 // CIR-LD-SAME: cir.default_tls_model = #cir.tls_model<tls_local_dyn>
-// CIR-LD-DAG: cir.global external @z1 = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-LD-DAG: cir.global external @z2 = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-LD-DAG: cir.global external tls_model = tls_local_dyn @x = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-LD-DAG: cir.global "private" internal tls_model = tls_local_dyn dso_local @_ZZ1fvE1y = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-LD-DAG: cir.global external tls_model = tls_init_exec @z = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-LD-DAG: cir.global external tls_model = tls_local_dyn tls_refs = <"_ZTW2s1", "_ZTH2s1"> @s1 = #cir.zero : !rec_S {alignment = 1 : i64, ast = #cir.var.decl.ast}
-// CIR-LD-DAG: cir.global external tls_model = tls_local_dyn tls_refs = <"_ZTW2t1", "_ZTH2t1"> @t1 = #cir.zero : !rec_T {alignment = 1 : i64, ast = #cir.var.decl.ast}
-// CIR-LD-DAG: cir.global internal tls_model = tls_local_dyn @__tls_guard = #cir.int<0> : !s8i {alignment = 1 : i64}
+// CIR-LD-DAG: cir.global external @z1 = #cir.int<0> : !s32i align(4)
+// CIR-LD-DAG: cir.global external @z2 = #cir.int<0> : !s32i align(4)
+// CIR-LD-DAG: cir.global external tls_model = tls_local_dyn @x = #cir.int<0> : !s32i align(4)
+// CIR-LD-DAG: cir.global "private" internal tls_model = tls_local_dyn dso_local @_ZZ1fvE1y = #cir.int<0> : !s32i align(4)
+// CIR-LD-DAG: cir.global external tls_model = tls_init_exec @z = #cir.int<0> : !s32i align(4)
+// CIR-LD-DAG: cir.global external tls_model = tls_local_dyn tls_refs = <"_ZTW2s1", "_ZTH2s1"> @s1 = #cir.zero : !rec_S align(1) ast(#cir.var.decl.ast)
+// CIR-LD-DAG: cir.global external tls_model = tls_local_dyn tls_refs = <"_ZTW2t1", "_ZTH2t1"> @t1 = #cir.zero : !rec_T align(1) ast(#cir.var.decl.ast)
+// CIR-LD-DAG: cir.global internal tls_model = tls_local_dyn @__tls_guard = #cir.int<0> : !s8i align(1)
 
 // LLVM-LD-DAG: @z1 ={{.*}} global i32 0
 // LLVM-LD-DAG: @z2 ={{.*}} global i32 0
@@ -95,14 +95,14 @@ struct T thread_local t1;
 
 // CIR-IE: module {{.*}} attributes 
 // CIR-IE-SAME: cir.default_tls_model = #cir.tls_model<tls_init_exec>
-// CIR-IE-DAG: cir.global external @z1 = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-IE-DAG: cir.global external @z2 = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-IE-DAG: cir.global external tls_model = tls_init_exec @x = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-IE-DAG: cir.global "private" internal tls_model = tls_init_exec dso_local @_ZZ1fvE1y = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-IE-DAG: cir.global external tls_model = tls_init_exec @z = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-IE-DAG: cir.global external tls_model = tls_init_exec tls_refs = <"_ZTW2s1", "_ZTH2s1"> @s1 = #cir.zero : !rec_S {alignment = 1 : i64, ast = #cir.var.decl.ast}
-// CIR-IE-DAG: cir.global external tls_model = tls_init_exec tls_refs = <"_ZTW2t1", "_ZTH2t1"> @t1 = #cir.zero : !rec_T {alignment = 1 : i64, ast = #cir.var.decl.ast}
-// CIR-IE-DAG: cir.global internal tls_model = tls_init_exec @__tls_guard = #cir.int<0> : !s8i {alignment = 1 : i64}
+// CIR-IE-DAG: cir.global external @z1 = #cir.int<0> : !s32i align(4)
+// CIR-IE-DAG: cir.global external @z2 = #cir.int<0> : !s32i align(4)
+// CIR-IE-DAG: cir.global external tls_model = tls_init_exec @x = #cir.int<0> : !s32i align(4)
+// CIR-IE-DAG: cir.global "private" internal tls_model = tls_init_exec dso_local @_ZZ1fvE1y = #cir.int<0> : !s32i align(4)
+// CIR-IE-DAG: cir.global external tls_model = tls_init_exec @z = #cir.int<0> : !s32i align(4)
+// CIR-IE-DAG: cir.global external tls_model = tls_init_exec tls_refs = <"_ZTW2s1", "_ZTH2s1"> @s1 = #cir.zero : !rec_S align(1) ast(#cir.var.decl.ast)
+// CIR-IE-DAG: cir.global external tls_model = tls_init_exec tls_refs = <"_ZTW2t1", "_ZTH2t1"> @t1 = #cir.zero : !rec_T align(1) ast(#cir.var.decl.ast)
+// CIR-IE-DAG: cir.global internal tls_model = tls_init_exec @__tls_guard = #cir.int<0> : !s8i align(1)
 
 // LLVM-IE-DAG: @z1 ={{.*}} global i32 0
 // LLVM-IE-DAG: @z2 ={{.*}} global i32 0
@@ -119,14 +119,14 @@ struct T thread_local t1;
 
 // CIR-LE: module {{.*}} attributes 
 // CIR-LE-SAME: cir.default_tls_model = #cir.tls_model<tls_local_exec>
-// CIR-LE-DAG: cir.global external @z1 = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-LE-DAG: cir.global external @z2 = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-LE-DAG: cir.global external tls_model = tls_local_exec @x = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-LE-DAG: cir.global "private" internal tls_model = tls_local_exec dso_local @_ZZ1fvE1y = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-LE-DAG: cir.global external tls_model = tls_init_exec @z = #cir.int<0> : !s32i {alignment = 4 : i64}
-// CIR-LE-DAG: cir.global external tls_model = tls_local_exec tls_refs = <"_ZTW2s1", "_ZTH2s1"> @s1 = #cir.zero : !rec_S {alignment = 1 : i64, ast = #cir.var.decl.ast}
-// CIR-LE-DAG: cir.global external tls_model = tls_local_exec tls_refs = <"_ZTW2t1", "_ZTH2t1"> @t1 = #cir.zero : !rec_T {alignment = 1 : i64, ast = #cir.var.decl.ast}
-// CIR-LE-DAG: cir.global internal tls_model = tls_local_exec @__tls_guard = #cir.int<0> : !s8i {alignment = 1 : i64}
+// CIR-LE-DAG: cir.global external @z1 = #cir.int<0> : !s32i align(4)
+// CIR-LE-DAG: cir.global external @z2 = #cir.int<0> : !s32i align(4)
+// CIR-LE-DAG: cir.global external tls_model = tls_local_exec @x = #cir.int<0> : !s32i align(4)
+// CIR-LE-DAG: cir.global "private" internal tls_model = tls_local_exec dso_local @_ZZ1fvE1y = #cir.int<0> : !s32i align(4)
+// CIR-LE-DAG: cir.global external tls_model = tls_init_exec @z = #cir.int<0> : !s32i align(4)
+// CIR-LE-DAG: cir.global external tls_model = tls_local_exec tls_refs = <"_ZTW2s1", "_ZTH2s1"> @s1 = #cir.zero : !rec_S align(1) ast(#cir.var.decl.ast)
+// CIR-LE-DAG: cir.global external tls_model = tls_local_exec tls_refs = <"_ZTW2t1", "_ZTH2t1"> @t1 = #cir.zero : !rec_T align(1) ast(#cir.var.decl.ast)
+// CIR-LE-DAG: cir.global internal tls_model = tls_local_exec @__tls_guard = #cir.int<0> : !s8i align(1)
 
 // LLVM-LE-DAG: @z1 ={{.*}} global i32 0
 // LLVM-LE-DAG: @z2 ={{.*}} global i32 0

diff  --git a/clang/test/CIR/CodeGen/union-agg-init.c b/clang/test/CIR/CodeGen/union-agg-init.c
index e2de285a85124..45eafb98710b6 100644
--- a/clang/test/CIR/CodeGen/union-agg-init.c
+++ b/clang/test/CIR/CodeGen/union-agg-init.c
@@ -43,7 +43,7 @@ struct Anon anon = { 101, 1 };
 
 struct Bitfields { int a : 3; int b : 4; union PtrToIntUnion u; };
 struct Bitfields bitfields = { 1, 2, { 9 } };
-// CIR-DAG: cir.global external @bitfields = #cir.const_record<{#cir.int<17> : !u8i, #cir.const_record<{#cir.int<9> : !s32i}> : !rec_PtrToIntUnion}> : !rec_Bitfields {alignment = 8 : i64} loc(#loc42)
+// CIR-DAG: cir.global external @bitfields = #cir.const_record<{#cir.int<17> : !u8i, #cir.const_record<{#cir.int<9> : !s32i}> : !rec_PtrToIntUnion}> : !rec_Bitfields align(8) loc(#loc42)
 // LLVM-DAG: @bitfields = global { i8, [7 x i8], { i32, [4 x i8] } } { i8 17, [7 x i8] zeroinitializer, { i32, [4 x i8] } { i32 9, [4 x i8] zeroinitializer } }
 
 struct FamUnion { int n; union PtrToIntUnion u; char fam[]; };
@@ -65,7 +65,7 @@ typedef union vec3 {
 // LLVMCIR-DAG: @__const.ret_outer.__retval = {{.*}}%struct.outer { %union.needs_padding zeroinitializer, i32 1 }, align 8
 // OGCG-DAG: @__const.ret_outer.o = {{.*}}{ { i32, [4 x i8] }, i32, [4 x i8] } { { i32, [4 x i8] } zeroinitializer, i32 1, [4 x i8] zeroinitializer }, align 8
 
-// CIR-DAG: cir.global "private" constant cir_private @__const.ret_outer.__retval = #cir.const_record<{#cir.zero : !rec_needs_padding, #cir.int<1> : !s32i}> : !rec_outer {alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant cir_private @__const.ret_outer.__retval = #cir.const_record<{#cir.zero : !rec_needs_padding, #cir.int<1> : !s32i}> : !rec_outer align(8)
 
 // In C mode, this does do zero padding.
 vec3 ret_vec3() {

diff  --git a/clang/test/CIR/CodeGen/vbase.cpp b/clang/test/CIR/CodeGen/vbase.cpp
index 262bc9fdc0110..9461427269863 100644
--- a/clang/test/CIR/CodeGen/vbase.cpp
+++ b/clang/test/CIR/CodeGen/vbase.cpp
@@ -51,7 +51,7 @@ void ppp() { B b; }
 // Note: OGCG speculatively emits the VTT and VTables. This is not yet implemented in CIR.
 
 // Vtable definition for B
-// CIR: cir.global "private" {{.*}}@_ZTV1B = #cir.vtable<{#cir.const_array<[#cir.ptr<12 : i64> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1B> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct3 {alignment = 8 : i64}
+// CIR: cir.global "private" {{.*}}@_ZTV1B = #cir.vtable<{#cir.const_array<[#cir.ptr<12 : i64> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1B> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct3 align(8)
 // LLVM: @_ZTV1B = linkonce_odr constant { [3 x ptr] } { [3 x ptr] [ptr inttoptr (i64 12 to ptr), ptr null, ptr @_ZTI1B] }, comdat, align 8
 
 // OGCG: @_ZTV1B = linkonce_odr constant { [3 x ptr] } { [3 x ptr] [ptr inttoptr (i64 12 to ptr), ptr null, ptr @_ZTI1B] }, comdat, align 8

diff  --git a/clang/test/CIR/CodeGen/vector-strict-fp.cpp b/clang/test/CIR/CodeGen/vector-strict-fp.cpp
index 3034949bc5adf..7e7f75879bb51 100644
--- a/clang/test/CIR/CodeGen/vector-strict-fp.cpp
+++ b/clang/test/CIR/CodeGen/vector-strict-fp.cpp
@@ -17,7 +17,7 @@ void vec_logical_not() {
 // CIR: %[[B_ADDR:.*]] = cir.alloca "b" {{.*}} init : !cir.ptr<!cir.vector<4 x !s32i>>
 // CIR: %[[TMP_A:.*]] = cir.load {{.*}} %[[A_ADDR]] : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float>
 // CIR: %[[CONST_ZERO:.*]] = cir.const #cir.zero : !cir.vector<4 x !cir.float>
-// CIR: %[[RESULT:.*]] = cir.vec.cmp(eq, %[[TMP_A]], %[[CONST_ZERO]]) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: %[[RESULT:.*]] = cir.vec.cmp(eq, %[[TMP_A]], %[[CONST_ZERO]]) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR: cir.store {{.*}} %[[RESULT]], %[[B_ADDR]] : !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>
 
 // SHARED: %[[A_ADDR:.*]] = alloca <4 x float>, align 16
@@ -39,8 +39,8 @@ void vec_logical_or() {
 // CIR: %[[CONST_ZERO:.*]] = cir.const #cir.zero : !cir.vector<4 x !cir.float>
 // CIR: %[[TMP_A:.*]] = cir.load {{.*}} %[[A_ADDR]] : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float>
 // CIR: %[[TMP_B:.*]] = cir.load {{.*}} %[[B_ADDR]] : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float>
-// CIR: %[[A_NE_ZERO:.*]] = cir.vec.cmp(ne, %[[TMP_A]], %[[CONST_ZERO]]) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR: %[[B_NE_ZERO:.*]] = cir.vec.cmp(ne, %[[TMP_B]], %[[CONST_ZERO]]) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: %[[A_NE_ZERO:.*]] = cir.vec.cmp(ne, %[[TMP_A]], %[[CONST_ZERO]]) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR: %[[B_NE_ZERO:.*]] = cir.vec.cmp(ne, %[[TMP_B]], %[[CONST_ZERO]]) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR: %[[RESULT:.*]] = cir.or %[[A_NE_ZERO]], %[[B_NE_ZERO]] : !cir.vector<4 x !s32i>
 // CIR: cir.store {{.*}} %[[RESULT]], %[[R_ADDR]] : !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>
 
@@ -79,8 +79,8 @@ void vec_logical_and() {
 // CIR: %[[CONST_ZERO:.*]] = cir.const #cir.zero : !cir.vector<4 x !cir.float>
 // CIR: %[[TMP_A:.*]] = cir.load {{.*}} %[[A_ADDR]] : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float>
 // CIR: %[[TMP_B:.*]] = cir.load {{.*}} %[[B_ADDR]] : !cir.ptr<!cir.vector<4 x !cir.float>>, !cir.vector<4 x !cir.float>
-// CIR: %[[A_NE_ZERO:.*]] = cir.vec.cmp(ne, %[[TMP_A]], %[[CONST_ZERO]]) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-// CIR: %[[B_NE_ZERO:.*]] = cir.vec.cmp(ne, %[[TMP_B]], %[[CONST_ZERO]]) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+// CIR: %[[A_NE_ZERO:.*]] = cir.vec.cmp(ne, %[[TMP_A]], %[[CONST_ZERO]]) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+// CIR: %[[B_NE_ZERO:.*]] = cir.vec.cmp(ne, %[[TMP_B]], %[[CONST_ZERO]]) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 // CIR: %[[RESULT:.*]] = cir.and %[[A_NE_ZERO]], %[[B_NE_ZERO]] : !cir.vector<4 x !s32i>
 // CIR: cir.store {{.*}} %[[RESULT]], %[[R_ADDR]] : !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>
 

diff  --git a/clang/test/CIR/CodeGen/vtt.cpp b/clang/test/CIR/CodeGen/vtt.cpp
index 795b26ded3b9c..4fa1a5b1f4c27 100644
--- a/clang/test/CIR/CodeGen/vtt.cpp
+++ b/clang/test/CIR/CodeGen/vtt.cpp
@@ -83,7 +83,7 @@ void D::y() {}
 // CIR-RTTI-SAME:        #cir.global_view<@_ZTI1D> : !cir.ptr<!u8i>,
 // CIR-COMMON-SAME:      #cir.global_view<@_ZN1A1vEv> : !cir.ptr<!u8i>
 // CIR-COMMON-SAME:    ]> : !cir.array<!cir.ptr<!u8i> x 4>
-// CIR-COMMON-SAME: }> : ![[REC_D_VTABLE]] {alignment = 8 : i64}
+// CIR-COMMON-SAME: }> : ![[REC_D_VTABLE]] align(8)
 
 // LLVM-COMMON:       @_ZTV1D = constant { [5 x ptr], [4 x ptr], [4 x ptr] } {
 // LLVM-NO-RTTI-SAME:   [5 x ptr] [ptr inttoptr (i64 40 to ptr), ptr null, ptr null, ptr @_ZN1B1wEv, ptr @_ZN1D1yEv],
@@ -114,7 +114,7 @@ void D::y() {}
 // CIR-COMMON-SAME:   #cir.global_view<@_ZTC1D16_1C, [1 : i32, 3 : i32]> : !cir.ptr<!u8i>,
 // CIR-COMMON-SAME:   #cir.global_view<@_ZTV1D, [2 : i32, 3 : i32]> : !cir.ptr<!u8i>,
 // CIR-COMMON-SAME:   #cir.global_view<@_ZTV1D, [1 : i32, 3 : i32]> : !cir.ptr<!u8i>
-// CIR-COMMON-SAME: ]> : !cir.array<!cir.ptr<!u8i> x 7> {alignment = 8 : i64}
+// CIR-COMMON-SAME: ]> : !cir.array<!cir.ptr<!u8i> x 7> align(8)
 
 // LLVM-COMMON:      @_ZTT1D = constant [7 x ptr] [
 // LLVM-COMMON-SAME:   ptr getelementptr inbounds nuw (i8, ptr @_ZTV1D, i64 24),

diff  --git a/clang/test/CIR/CodeGenCUDA/address-spaces.cu b/clang/test/CIR/CodeGenCUDA/address-spaces.cu
index 6637100fd76c9..8e452d0012175 100644
--- a/clang/test/CIR/CodeGenCUDA/address-spaces.cu
+++ b/clang/test/CIR/CodeGenCUDA/address-spaces.cu
@@ -52,17 +52,17 @@
 // CIR-POST: cir.global external  target_address_space(1) @i = #cir.int<0>
 // LLVM-DEVICE-DAG: @i = addrspace(1) {{.*}}global i32 0
 // OGCG-DAG: @i = addrspace(1) externally_initialized global i32 0
-// CIR-HOST: cir.global {{.*}} @i = #cir.undef : {{.*}} {{{.*}}, cu.var_registration = #cir.cu.var_registration<i, Variable>}
+// CIR-HOST: cir.global {{.*}} @i = #cir.undef : {{.*}} {{.*}}{cu.var_registration = #cir.cu.var_registration<i, Variable>}
 // LLVM-HOST: @i = internal global i32 undef
 // OGCG-HOST: @i = internal global i32 undef
 __device__ int i;
 
 // CIR-PRE: cir.global constant external  lang_address_space(offload_constant) @j = #cir.int<0>
 // CIR-POST: cir.global constant external  target_address_space(4) @j = #cir.int<0>
-// CIR-DEVICE: cir.global constant external target_address_space(4) @j = #cir.int<0> : {{.*}} {{{.*}}, cu.externally_initialized = #cir.cu.externally_initialized, cu.var_registration = #cir.cu.var_registration<j, Variable, constant>}
+// CIR-DEVICE: cir.global constant external target_address_space(4) @j = #cir.int<0> : {{.*}} {{.*}}{cu.externally_initialized = #cir.cu.externally_initialized, cu.var_registration = #cir.cu.var_registration<j, Variable, constant>}
 // LLVM-DEVICE-DAG: @j = addrspace(4) {{.*}}constant i32 0
 // OGCG-DAG: @j = addrspace(4) externally_initialized constant i32 0
-// CIR-HOST:  cir.global {{.*}} @j = #cir.undef : {{.*}} {{{.*}}, cu.var_registration = #cir.cu.var_registration<j, Variable, constant>}
+// CIR-HOST:  cir.global {{.*}} @j = #cir.undef : {{.*}} {{.*}}{cu.var_registration = #cir.cu.var_registration<j, Variable, constant>}
 // LLVM-HOST: @j = internal global i32 undef
 // OGCG-HOST: @j = internal global i32 undef
 __constant__ int j;
@@ -100,7 +100,7 @@ extern __constant__ int ext_constant_var;
 // External device variables with definitions should be internal on host
 // CIR-DEVICE: cir.global external target_address_space(1) @ext_device_var_def = #cir.int<1>
 // LLVM-DEVICE: @ext_device_var_def = addrspace(1) externally_initialized global i32 1, align 4
-// CIR-HOST: cir.global "private" internal {{.*}} @ext_device_var_def = #cir.undef : {{.*}} {{{.*}}, cu.var_registration = #cir.cu.var_registration<ext_device_var_def, Variable>}
+// CIR-HOST: cir.global "private" internal {{.*}} @ext_device_var_def = #cir.undef : {{.*}} {{.*}}{cu.var_registration = #cir.cu.var_registration<ext_device_var_def, Variable>}
 // LLVM-HOST: @ext_device_var_def = internal global i32 undef, align 4
 // OGCG-HOST: @ext_device_var_def = internal global i32
 // OGCG-DEVICE: @ext_device_var_def = addrspace(1) externally_initialized global i32 1, align 4
@@ -110,7 +110,7 @@ __device__ int ext_device_var_def = 1;
 // CIR-DEVICE: cir.global constant external target_address_space(4) @ext_constant_var_def = #cir.int<2>
 // LLVM-DEVICE: @ext_constant_var_def = addrspace(4) externally_initialized constant i32 2, align 4
 // OGCG-DEVICE: @ext_constant_var_def = addrspace(4) externally_initialized constant i32 2, align 4
-// CIR-HOST: cir.global "private" internal {{.*}} @ext_constant_var_def = #cir.undef : {{.*}} {{{.*}}, cu.var_registration = #cir.cu.var_registration<ext_constant_var_def, Variable, constant>}
+// CIR-HOST: cir.global "private" internal {{.*}} @ext_constant_var_def = #cir.undef : {{.*}} {{.*}}{cu.var_registration = #cir.cu.var_registration<ext_constant_var_def, Variable, constant>}
 // LLVM-HOST: @ext_constant_var_def = internal global i32 undef, align 4
 // OGCG-HOST: @ext_constant_var_def = internal global i32
 extern __constant__ int ext_constant_var_def;

diff  --git a/clang/test/CIR/CodeGenCUDA/device-stub.cu b/clang/test/CIR/CodeGenCUDA/device-stub.cu
index a480cee5d8ebd..aa513f3537454 100644
--- a/clang/test/CIR/CodeGenCUDA/device-stub.cu
+++ b/clang/test/CIR/CodeGenCUDA/device-stub.cu
@@ -128,7 +128,7 @@ __device__ _BitInt(36) c;
 // CIR-NEXT: cir.call @__cudaRegisterVar(%[[FATBIN]], %[[#HOSTC]], %[[#NAMEC]], %[[#NAMEC]], %[[#EXTC]], %[[#SZC]], %[[#CONC]], %[[#NORMC]])
 // CIR-NEXT: cir.return
 
-// CIR: cir.global "private" constant cir_private @__cuda_fatbin_str = #cir.const_array<"GPU binary would be here." : !cir.array<!u8i x 25>> : !cir.array<!u8i x 25> {alignment = 8 : i64, section = ".nv_fatbin"}
+// CIR: cir.global "private" constant cir_private @__cuda_fatbin_str = #cir.const_array<"GPU binary would be here." : !cir.array<!u8i x 25>> : !cir.array<!u8i x 25> align(8) section(".nv_fatbin")
 
 // The bytes arrive as the #cir.cu.device_binary module attribute, which
 // LoweringPrepare erases once they are in the global above.
@@ -140,7 +140,7 @@ __device__ _BitInt(36) c;
 // CIR-SAME: #cir.int<1> : !s32i,
 // CIR-SAME: #cir.global_view<@__cuda_fatbin_str> : !cir.ptr<!void>,
 // CIR-SAME: #cir.ptr<null> : !cir.ptr<!void>
-// CIR-SAME: }> : !rec_anon_struct{{[0-9]*}} {section = ".nvFatBinSegment"}
+// CIR-SAME: }> : !rec_anon_struct{{[0-9]*}} section(".nvFatBinSegment")
 
 // Check the GPU binary handle global.
 // CIR: cir.global "private" internal @__cuda_gpubin_handle = #cir.ptr<null> : !cir.ptr<!cir.ptr<!void>>
@@ -271,13 +271,13 @@ __device__ _BitInt(36) c;
 
 // Fatbin string + wrapper live in the HIP-specific sections; magic
 // 0x48495046 = 1212764230.
-// HIP-CIR: cir.global "private" constant cir_private @__hip_fatbin_str = #cir.const_array<"GPU binary would be here." : !cir.array<!u8i x 25>> : !cir.array<!u8i x 25> {alignment = 4096 : i64, section = ".hip_fatbin"}
+// HIP-CIR: cir.global "private" constant cir_private @__hip_fatbin_str = #cir.const_array<"GPU binary would be here." : !cir.array<!u8i x 25>> : !cir.array<!u8i x 25> align(4096) section(".hip_fatbin")
 // HIP-CIR: cir.global constant cir_private @__hip_fatbin_wrapper = #cir.const_record<{
 // HIP-CIR-SAME: #cir.int<1212764230> : !s32i,
 // HIP-CIR-SAME: #cir.int<1> : !s32i,
 // HIP-CIR-SAME: #cir.global_view<@__hip_fatbin_str> : !cir.ptr<!void>,
 // HIP-CIR-SAME: #cir.ptr<null> : !cir.ptr<!void>
-// HIP-CIR-SAME: }> : !rec_anon_struct{{[0-9]*}} {section = ".hipFatBinSegment"}
+// HIP-CIR-SAME: }> : !rec_anon_struct{{[0-9]*}} section(".hipFatBinSegment")
 
 // HIP-CIR: cir.global "private" internal @__hip_gpubin_handle = #cir.ptr<null> : !cir.ptr<!cir.ptr<!void>>
 // HIP-CIR: cir.func private @__hipRegisterFatBinary(!cir.ptr<!void>) -> !cir.ptr<!cir.ptr<!void>>
@@ -305,7 +305,7 @@ __device__ _BitInt(36) c;
 // HIP-CIR:   {{.*}} = cir.call @atexit(%[[DTOR_PTR]])
 // HIP-CIR:   cir.return
 
-// HIP-CIR: cir.global constant external @_Z10kernelfunciii = #cir.global_view<@_Z25__device_stub__kernelfunciii> : !cir.ptr<!cir.func<(!s32i, !s32i, !s32i)>> {alignment = 8 : i64}
+// HIP-CIR: cir.global constant external @_Z10kernelfunciii = #cir.global_view<@_Z25__device_stub__kernelfunciii> : !cir.ptr<!cir.func<(!s32i, !s32i, !s32i)>> align(8)
 
 // HIP OGCG cross-check (LLVM IR matches what OG codegen emits for HIP).
 // HIP-OGCG: @{{.*}} = private constant [25 x i8] c"GPU binary would be here.", section ".hip_fatbin", align 4096

diff  --git a/clang/test/CIR/CodeGenCUDA/kernel-call.cu b/clang/test/CIR/CodeGenCUDA/kernel-call.cu
index 9848a48bedb7b..58da391503faf 100644
--- a/clang/test/CIR/CodeGenCUDA/kernel-call.cu
+++ b/clang/test/CIR/CodeGenCUDA/kernel-call.cu
@@ -66,7 +66,7 @@
 // CUDA-PTH: cir.call @cudaLaunchKernel_ptsz
 
 //
-// HIP-NEW: cir.global constant external @_Z6kernelif = #cir.global_view<@_Z21__device_stub__kernelif> : !cir.ptr<!cir.func<(!s32i, !cir.float)>> {alignment = 8 : i64}
+// HIP-NEW: cir.global constant external @_Z6kernelif = #cir.global_view<@_Z21__device_stub__kernelif> : !cir.ptr<!cir.func<(!s32i, !cir.float)>> align(8)
 // HIP-NEW-LABEL: cir.func {{.*}} @_Z21__device_stub__kernelif
 // HIP-NEW: cir.alloca "stream" {{.*}} : !cir.ptr<!cir.ptr<!rec_hipStream>>
 // HIP-NEW: cir.call @__hipPopCallConfiguration({{.*}}) : (!cir.ptr<!rec_dim3>, !cir.ptr<!rec_dim3>, !cir.ptr<!u64i>, !cir.ptr<!cir.ptr<!rec_hipStream>>) -> !s32i

diff  --git a/clang/test/CIR/CodeGenCXX/global-refs.cpp b/clang/test/CIR/CodeGenCXX/global-refs.cpp
index a749234461534..7843fad4de638 100644
--- a/clang/test/CIR/CodeGenCXX/global-refs.cpp
+++ b/clang/test/CIR/CodeGenCXX/global-refs.cpp
@@ -18,16 +18,16 @@ struct WithCtorDtor{
 
 
 int globalInt;
-// CIR: cir.global external @globalInt = #cir.int<0> : !s32i {alignment = 4 : i64}
+// CIR: cir.global external @globalInt = #cir.int<0> : !s32i align(4)
 // LLVM: @globalInt = global i32 0, align 4
 
 int &globalIntRef = globalInt;
-// CIR: cir.global constant external @globalIntRef = #cir.global_view<@globalInt> : !cir.ptr<!s32i> {alignment = 8 : i64}
+// CIR: cir.global constant external @globalIntRef = #cir.global_view<@globalInt> : !cir.ptr<!s32i> align(8)
 // LLVM: @globalIntRef = constant ptr @globalInt, align 8
 
 const int &constGlobalIntRef = 5;
-// CIR: cir.global "private" constant internal @_ZGR17constGlobalIntRef_ = #cir.int<5> : !s32i {alignment = 4 : i64}
-// CIR: cir.global constant external @constGlobalIntRef = #cir.global_view<@_ZGR17constGlobalIntRef_> : !cir.ptr<!s32i> {alignment = 8 : i64}
+// CIR: cir.global "private" constant internal @_ZGR17constGlobalIntRef_ = #cir.int<5> : !s32i align(4)
+// CIR: cir.global constant external @constGlobalIntRef = #cir.global_view<@_ZGR17constGlobalIntRef_> : !cir.ptr<!s32i> align(8)
 // LLVM: @_ZGR17constGlobalIntRef_ = {{.*}}constant i32 5, align 4
 // LLVM: @constGlobalIntRef = constant ptr @_ZGR17constGlobalIntRef_, align 8
 
@@ -35,17 +35,17 @@ DefCtor defCtor{};
 // FIXME(cir): Classic-codegen leaves this as undef, but we don't 
diff erentiate
 // between padding and not defined fields in lowering. IF this ends up being
 // necessary, we should do it here.
-// CIR: cir.global external @defCtor = #cir.zero : !rec_DefCtor {alignment = 1 : i64}
+// CIR: cir.global external @defCtor = #cir.zero : !rec_DefCtor align(1)
 // LLVMCIR: @defCtor = global %struct.DefCtor zeroinitializer, align 1
 // OGCG: @defCtor = global %struct.DefCtor undef, align 1
 
 DefCtor &defCtorRef = defCtor;
-// CIR: cir.global constant external @defCtorRef = #cir.global_view<@defCtor> : !cir.ptr<!rec_DefCtor> {alignment = 8 : i64}
+// CIR: cir.global constant external @defCtorRef = #cir.global_view<@defCtor> : !cir.ptr<!rec_DefCtor> align(8)
 // LLVM: @defCtorRef = constant ptr @defCtor, align 8
 
 const DefCtor &constDefCtorRef{};
-// CIR: cir.global "private" constant internal @_ZGR15constDefCtorRef_ = #cir.zero : !rec_DefCtor {alignment = 1 : i64}
-// CIR: cir.global constant external @constDefCtorRef = #cir.global_view<@_ZGR15constDefCtorRef_> : !cir.ptr<!rec_DefCtor> {alignment = 8 : i64}
+// CIR: cir.global "private" constant internal @_ZGR15constDefCtorRef_ = #cir.zero : !rec_DefCtor align(1)
+// CIR: cir.global constant external @constDefCtorRef = #cir.global_view<@_ZGR15constDefCtorRef_> : !cir.ptr<!rec_DefCtor> align(8)
 // LLVMCIR: @_ZGR15constDefCtorRef_ = {{.*}}constant %struct.DefCtor zeroinitializer, align 1
 // OGCG: @_ZGR15constDefCtorRef_ = {{.*}}constant %struct.DefCtor undef, align 1
 // LLVM: @constDefCtorRef = constant ptr @_ZGR15constDefCtorRef_, align 8
@@ -54,8 +54,8 @@ WithCtor withCtor{};
 // CIR-BEFORE:  cir.global external @withCtor = ctor : !rec_WithCtor {
 // CIR-BEFORE-NEXT:    %[[GET_GLOB:.*]] = cir.get_global @withCtor : !cir.ptr<!rec_WithCtor>
 // CIR-BEFORE-NEXT:    cir.call @_ZN8WithCtorC1Ev(%[[GET_GLOB]]) : (!cir.ptr<!rec_WithCtor>{{.*}}) -> ()
-// CIR-BEFORE-NEXT:  } {alignment = 1 : i64, ast = #cir.var.decl.ast}
-// CIR-AFTER: cir.global external @withCtor = #cir.zero : !rec_WithCtor {alignment = 1 : i64, ast = #cir.var.decl.ast}
+// CIR-BEFORE-NEXT:  } align(1) ast(#cir.var.decl.ast)
+// CIR-AFTER: cir.global external @withCtor = #cir.zero : !rec_WithCtor align(1) ast(#cir.var.decl.ast)
 // CIR-AFTER-NEXT: cir.func internal private @__cxx_global_var_init{{.*}}() {
 // CIR-AFTER-NEXT:   %[[GET_GLOB:.*]] = cir.get_global @withCtor : !cir.ptr<!rec_WithCtor>
 // CIR-AFTER-NEXT:   cir.call @_ZN8WithCtorC1Ev(%[[GET_GLOB]]) : (!cir.ptr<!rec_WithCtor>{{.*}}) -> ()
@@ -64,7 +64,7 @@ WithCtor withCtor{};
 // LLVM: @withCtor = global %struct.WithCtor zeroinitializer, align 1
 
 WithCtor &withCtorRef = withCtor;
-// CIR: cir.global constant external @withCtorRef = #cir.global_view<@withCtor> : !cir.ptr<!rec_WithCtor> {alignment = 8 : i64}
+// CIR: cir.global constant external @withCtorRef = #cir.global_view<@withCtor> : !cir.ptr<!rec_WithCtor> align(8)
 // LLVM: @withCtorRef = constant ptr @withCtor, align 8
 
 const WithCtor &constWithCtorRef{};
@@ -73,8 +73,8 @@ const WithCtor &constWithCtorRef{};
 // CIR-BEFORE-NEXT:   %[[GET_GLOB_OBJ:.*]] = cir.get_global @_ZGR16constWithCtorRef_ : !cir.ptr<!rec_WithCtor>
 // CIR-BEFORE-NEXT:   cir.call @_ZN8WithCtorC1Ev(%[[GET_GLOB_OBJ]]) : (!cir.ptr<!rec_WithCtor>{{.*}}) -> ()
 // CIR-BEFORE-NEXT:   cir.store align(8) %[[GET_GLOB_OBJ]], %[[GET_GLOB]] : !cir.ptr<!rec_WithCtor>, !cir.ptr<!cir.ptr<!rec_WithCtor>>
-// CIR-BEFORE-NEXT: } {alignment = 8 : i64, ast = #cir.var.decl.ast}
-// CIR-AFTER: cir.global external @constWithCtorRef = #cir.ptr<null> : !cir.ptr<!rec_WithCtor> {alignment = 8 : i64, ast = #cir.var.decl.ast}
+// CIR-BEFORE-NEXT: } align(8) ast(#cir.var.decl.ast)
+// CIR-AFTER: cir.global external @constWithCtorRef = #cir.ptr<null> : !cir.ptr<!rec_WithCtor> align(8) ast(#cir.var.decl.ast)
 // CIR-AFTER-NEXT: cir.func internal private @__cxx_global_var_init{{.*}}() {
 // CIR-AFTER-NEXT:   %[[GET_GLOB:.*]] = cir.get_global @constWithCtorRef : !cir.ptr<!cir.ptr<!rec_WithCtor>>
 // CIR-AFTER-NEXT:   %[[GET_GLOB_OBJ:.*]] = cir.get_global @_ZGR16constWithCtorRef_ : !cir.ptr<!rec_WithCtor>
@@ -91,8 +91,8 @@ const WithCtor &constWithCtorRef2{5};
 // CIR-BEFORE-NEXT:   %[[FIVE:.*]] = cir.const #cir.int<5> : !s32i
 // CIR-BEFORE-NEXT:   cir.call @_ZN8WithCtorC1Ei(%[[GET_GLOB_OBJ]], %[[FIVE]]) : (!cir.ptr<!rec_WithCtor>{{.*}}, !s32i{{.*}}) -> ()
 // CIR-BEFORE-NEXT:   cir.store align(8) %[[GET_GLOB_OBJ]], %[[GET_GLOB]] : !cir.ptr<!rec_WithCtor>, !cir.ptr<!cir.ptr<!rec_WithCtor>>
-// CIR-BEFORE-NEXT: } {alignment = 8 : i64, ast = #cir.var.decl.ast}
-// CIR-AFTER: cir.global external @constWithCtorRef2 = #cir.ptr<null> : !cir.ptr<!rec_WithCtor> {alignment = 8 : i64, ast = #cir.var.decl.ast}
+// CIR-BEFORE-NEXT: } align(8) ast(#cir.var.decl.ast)
+// CIR-AFTER: cir.global external @constWithCtorRef2 = #cir.ptr<null> : !cir.ptr<!rec_WithCtor> align(8) ast(#cir.var.decl.ast)
 // CIR-AFTER-NEXT: cir.func internal private @__cxx_global_var_init{{.*}}() {
 // CIR-AFTER-NEXT:   %[[GET_GLOB:.*]] = cir.get_global @constWithCtorRef2 : !cir.ptr<!cir.ptr<!rec_WithCtor>>
 // CIR-AFTER-NEXT:   %[[GET_GLOB_OBJ:.*]] = cir.get_global @_ZGR17constWithCtorRef2_ : !cir.ptr<!rec_WithCtor>
@@ -110,8 +110,8 @@ WithCtorDtor withCtorDtor{};
 // CIR-BEFORE-NEXT: } dtor {
 // CIR-BEFORE-NEXT:   %[[GET_GLOB:.*]] = cir.get_global @withCtorDtor : !cir.ptr<!rec_WithCtorDtor>
 // CIR-BEFORE-NEXT:   cir.call @_ZN12WithCtorDtorD1Ev(%[[GET_GLOB]]) : (!cir.ptr<!rec_WithCtorDtor>{{.*}}) -> ()
-// CIR-BEFORE-NEXT: } {alignment = 1 : i64, ast = #cir.var.decl.ast}
-// CIR-AFTER: cir.global external @withCtorDtor = #cir.zero : !rec_WithCtorDtor {alignment = 1 : i64, ast = #cir.var.decl.ast}
+// CIR-BEFORE-NEXT: } align(1) ast(#cir.var.decl.ast)
+// CIR-AFTER: cir.global external @withCtorDtor = #cir.zero : !rec_WithCtorDtor align(1) ast(#cir.var.decl.ast)
 // CIR-AFTER: cir.func internal private @__cxx_global_var_init{{.*}}() {
 // CIR-AFTER-NEXT:   %[[GET_GLOB:.*]] = cir.get_global @withCtorDtor : !cir.ptr<!rec_WithCtorDtor>
 // CIR-AFTER-NEXT:   cir.call @_ZN12WithCtorDtorC1Ev(%[[GET_GLOB]]) : (!cir.ptr<!rec_WithCtorDtor>{{.*}}) -> ()
@@ -127,7 +127,7 @@ WithCtorDtor withCtorDtor{};
 
 
 WithCtorDtor &withCtorDtorRef = withCtorDtor;
-// CIR: cir.global constant external @withCtorDtorRef = #cir.global_view<@withCtorDtor> : !cir.ptr<!rec_WithCtorDtor> {alignment = 8 : i64}
+// CIR: cir.global constant external @withCtorDtorRef = #cir.global_view<@withCtorDtor> : !cir.ptr<!rec_WithCtorDtor> align(8)
 // LLVM: @withCtorDtorRef = constant ptr @withCtorDtor, align 8
 
 extern WithCtor &ExternRef;

diff  --git a/clang/test/CIR/CodeGenCXX/init-priority-attr.cpp b/clang/test/CIR/CodeGenCXX/init-priority-attr.cpp
index d4d1c0b3cd203..60aeff885b3af 100644
--- a/clang/test/CIR/CodeGenCXX/init-priority-attr.cpp
+++ b/clang/test/CIR/CodeGenCXX/init-priority-attr.cpp
@@ -39,16 +39,16 @@ A C::a = A();
 
 // Static inside of C.
 // CIR-BEFORE-LPP: cir.global external @_ZN1C1aE = ctor : !rec_A {
-// CIR-BEFORE-LPP: } {alignment = 1 : i64, ast = #cir.var.decl.ast}
+// CIR-BEFORE-LPP: } align(1) ast(#cir.var.decl.ast)
 // CIR-BEFORE-LPP: cir.global external @c = ctor : !rec_C {
-// CIR-BEFORE-LPP: } {alignment = 1 : i64, ast = #cir.var.decl.ast}
+// CIR-BEFORE-LPP: } align(1) ast(#cir.var.decl.ast)
 
 // CIR-BEFORE-LPP: cir.global external @a1 = ctor : !rec_A1 {
-// CIR-BEFORE-LPP: } {alignment = 1 : i64, ast = #cir.var.decl.ast, init_priority = 300 : i32}
+// CIR-BEFORE-LPP: } align(1) ast(#cir.var.decl.ast) init_priority(300)
 // CIR-BEFORE-LPP: cir.global external @a = ctor : !rec_A {
-// CIR-BEFORE-LPP: } {alignment = 1 : i64, ast = #cir.var.decl.ast, init_priority = 300 : i32}
+// CIR-BEFORE-LPP: } align(1) ast(#cir.var.decl.ast) init_priority(300)
 // CIR-BEFORE-LPP: cir.global external @b = ctor : !rec_B {
-// CIR-BEFORE-LPP: } {alignment = 1 : i64, ast = #cir.var.decl.ast, init_priority = 200 : i32}
+// CIR-BEFORE-LPP: } align(1) ast(#cir.var.decl.ast) init_priority(200)
 
 // CIR: cir.global_ctors = [#cir.global_ctor<"_GLOBAL__I_000200", 200>, #cir.global_ctor<"_GLOBAL__I_000300", 300>, #cir.global_ctor<"_GLOBAL__sub_I_[[FILENAME:.*]]", 65535>]
 // CIR-LABEL: cir.func internal private @__cxx_global_var_init() {

diff  --git a/clang/test/CIR/CodeGenCXX/vtable-linkage.cpp b/clang/test/CIR/CodeGenCXX/vtable-linkage.cpp
index 54f6f9c54a69c..cdef1dbeb086a 100644
--- a/clang/test/CIR/CodeGenCXX/vtable-linkage.cpp
+++ b/clang/test/CIR/CodeGenCXX/vtable-linkage.cpp
@@ -109,15 +109,15 @@ void use_F() {
 
 // B has a key function that is not defined in this translation unit so its vtable
 // has external linkage.
-// CIR-DAG: cir.global "private" constant external @_ZTV1B : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant external @_ZTV1B : !{{.*}}align(8)
 // LLVM-DAG: @_ZTV1B = external constant { [3 x ptr] }, align 8
 
 // C has no key function, so its vtable should have weak_odr linkage
 // and hidden visibility.
-// CIR-DAG: cir.global "private" constant linkonce_odr comdat @_ZTV1C = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1C> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1C1fEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 5>}> : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTS1C = #cir.const_array<"1C" : !cir.array<!s8i x 2>, trailing_zeros> : !cir.array<!s8i x 3> {alignment = 1 : i64}
-// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTI1C = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv121__vmi_class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1C> : !cir.ptr<!u8i>, #cir.int<0> : !u32i, #cir.int<1> : !u32i, #cir.global_view<@_ZTI1B> : !cir.ptr<!u8i>, #cir.int<-8189> : !s64i}> : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTT1C = #cir.const_array<[#cir.global_view<@_ZTV1C, [0 : i32, 4 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTV1C, [0 : i32, 4 : i32]> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 2> {alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant linkonce_odr comdat @_ZTV1C = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1C> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1C1fEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 5>}> : !{{.*}}align(8)
+// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTS1C = #cir.const_array<"1C" : !cir.array<!s8i x 2>, trailing_zeros> : !cir.array<!s8i x 3> align(1)
+// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTI1C = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv121__vmi_class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1C> : !cir.ptr<!u8i>, #cir.int<0> : !u32i, #cir.int<1> : !u32i, #cir.global_view<@_ZTI1B> : !cir.ptr<!u8i>, #cir.int<-8189> : !s64i}> : !{{.*}}align(8)
+// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTT1C = #cir.const_array<[#cir.global_view<@_ZTV1C, [0 : i32, 4 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTV1C, [0 : i32, 4 : i32]> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 2> align(8)
 // LLVM-DAG: @_ZTV1C = linkonce_odr constant { [5 x ptr] } { [5 x ptr] [ptr null, ptr null, ptr null, ptr @_ZTI1C, ptr @_ZN1C1fEv] }, comdat, align 8
 // LLVM-DAG: @_ZTS1C = linkonce_odr constant [{{[0-9]}} x i8] c"1C\00", comdat, align 1
 // LLVM-DAG: @_ZTI1C = linkonce_odr constant { ptr, ptr, i32, i32, ptr, i64 } { ptr getelementptr{{.*}}({{.*}}, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 {{.*}}), ptr @_ZTS1C, i32 0, i32 1, ptr @_ZTI1B, i64 -8189 }, comdat
@@ -125,9 +125,9 @@ void use_F() {
 
 // D has a key function that is defined in this translation unit so its vtable is
 // defined in the translation unit.
-// CIR-DAG: cir.global "private" constant external @_ZTV1D = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1D> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1D1fEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global constant external @_ZTS1D = #cir.const_array<"1D" : !cir.array<!s8i x 2>, trailing_zeros> : !cir.array<!s8i x 3> {alignment = 1 : i64}
-// CIR-DAG: cir.global constant external @_ZTI1D = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1D> : !cir.ptr<!u8i>}> : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant external @_ZTV1D = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1D> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1D1fEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}align(8)
+// CIR-DAG: cir.global constant external @_ZTS1D = #cir.const_array<"1D" : !cir.array<!s8i x 2>, trailing_zeros> : !cir.array<!s8i x 3> align(1)
+// CIR-DAG: cir.global constant external @_ZTI1D = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1D> : !cir.ptr<!u8i>}> : !{{.*}}align(8)
 // LLVM-DAG: @_ZTV1D = constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1D, ptr @_ZN1D1fEv] }, align 8
 // LLVM-DAG: @_ZTS1D = constant [{{[0-9]}} x i8] c"1D\00", align 1
 // LLVM-DAG: @_ZTI1D = constant { ptr, ptr } { ptr getelementptr {{.*}}({{.*}}, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 {{[0-9]+}}), ptr @_ZTS1D }, align 8
@@ -135,9 +135,9 @@ void use_F() {
 // E<char> is an explicit specialization with a key function defined
 // in this translation unit, so its vtable should have external
 // linkage.
-// CIR-DAG: cir.global "private" constant external @_ZTV1EIcE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1EIcE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1EIcE6anchorEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global constant external @_ZTS1EIcE = #cir.const_array<"1EIcE" : !cir.array<!s8i x 5>, trailing_zeros> : !cir.array<!s8i x 6> {alignment = 1 : i64}
-// CIR-DAG: cir.global constant external @_ZTI1EIcE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1EIcE> : !cir.ptr<!u8i>}> : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant external @_ZTV1EIcE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1EIcE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1EIcE6anchorEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}align(8)
+// CIR-DAG: cir.global constant external @_ZTS1EIcE = #cir.const_array<"1EIcE" : !cir.array<!s8i x 5>, trailing_zeros> : !cir.array<!s8i x 6> align(1)
+// CIR-DAG: cir.global constant external @_ZTI1EIcE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1EIcE> : !cir.ptr<!u8i>}> : !{{.*}}align(8)
 // LLVM-DAG: @_ZTV1EIcE = constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1EIcE, ptr @_ZN1EIcE6anchorEv] }, align 8
 // LLVM-DAG: @_ZTS1EIcE = constant [6 x i8] c"1EIcE\00", align 1
 // LLVM-DAG: @_ZTI1EIcE = constant { ptr, ptr } { ptr getelementptr {{.*}}({{.*}}, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 {{.*}}), ptr @_ZTS1EIcE }, align 8
@@ -145,18 +145,18 @@ void use_F() {
 // E<short> is an explicit template instantiation with a key function
 // defined in this translation unit, so its vtable should have
 // weak_odr linkage.
-// CIR-DAG: cir.global "private" constant weak_odr comdat @_ZTV1EIsE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1EIsE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1EIsED1Ev> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1EIsED0Ev> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global constant weak_odr comdat @_ZTI1EIsE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1EIsE> : !cir.ptr<!u8i>}> : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global constant weak_odr comdat @_ZTS1EIsE = #cir.const_array<"1EIsE" : !cir.array<!s8i x 5>, trailing_zeros> : !cir.array<!s8i x 6> {alignment = 1 : i64}
+// CIR-DAG: cir.global "private" constant weak_odr comdat @_ZTV1EIsE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1EIsE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1EIsED1Ev> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1EIsED0Ev> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !{{.*}}align(8)
+// CIR-DAG: cir.global constant weak_odr comdat @_ZTI1EIsE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1EIsE> : !cir.ptr<!u8i>}> : !{{.*}}align(8)
+// CIR-DAG: cir.global constant weak_odr comdat @_ZTS1EIsE = #cir.const_array<"1EIsE" : !cir.array<!s8i x 5>, trailing_zeros> : !cir.array<!s8i x 6> align(1)
 // LLVM-DAG: @_ZTV1EIsE = weak_odr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI1EIsE, ptr @_ZN1EIsED1Ev, ptr @_ZN1EIsED0Ev] }, comdat, align 8
 // LLVM-DAG: @_ZTI1EIsE = weak_odr constant { ptr, ptr } { ptr getelementptr {{.*}}({{.*}}, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 {{.*}}), ptr @_ZTS1EIsE }, comdat
 // LLVM-DAG: @_ZTS1EIsE = weak_odr constant [6 x i8] c"1EIsE\00", comdat
 
 // F<short> is an explicit template instantiation without a key
 // function, so its vtable should have weak_odr linkage
-// CIR-DAG: cir.global "private" constant weak_odr comdat @_ZTV1FIsE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1FIsE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1FIsE3fooEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global constant weak_odr comdat @_ZTS1FIsE = #cir.const_array<"1FIsE" : !cir.array<!s8i x 5>, trailing_zeros> : !cir.array<!s8i x 6> {alignment = 1 : i64}
-// CIR-DAG: cir.global constant weak_odr comdat @_ZTI1FIsE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1FIsE> : !cir.ptr<!u8i>}> : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant weak_odr comdat @_ZTV1FIsE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1FIsE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1FIsE3fooEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}align(8)
+// CIR-DAG: cir.global constant weak_odr comdat @_ZTS1FIsE = #cir.const_array<"1FIsE" : !cir.array<!s8i x 5>, trailing_zeros> : !cir.array<!s8i x 6> align(1)
+// CIR-DAG: cir.global constant weak_odr comdat @_ZTI1FIsE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1FIsE> : !cir.ptr<!u8i>}> : !{{.*}}align(8)
 // LLVM-DAG: @_ZTV1FIsE = weak_odr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1FIsE, ptr @_ZN1FIsE3fooEv] }, comdat, align 8
 // LLVM-DAG: @_ZTS1FIsE = weak_odr constant [6 x i8] c"1FIsE\00", comdat, align 1
 // LLVM-DAG: @_ZTI1FIsE = weak_odr constant { ptr, ptr } { ptr getelementptr {{.*}}({{.*}}, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 {{.*}}), ptr @_ZTS1FIsE }, comdat
@@ -164,25 +164,25 @@ void use_F() {
 // E<long> is an implicit template instantiation with a key function
 // defined in this translation unit, so its vtable should have
 // linkonce_odr linkage.
-// CIR-DAG: cir.global "private" constant linkonce_odr comdat @_ZTV1EIlE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1EIlE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1EIlED1Ev> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1EIlED0Ev> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTS1EIlE = #cir.const_array<"1EIlE" : !cir.array<!s8i x 5>, trailing_zeros> : !cir.array<!s8i x 6> {alignment = 1 : i64}
-// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTI1EIlE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1EIlE> : !cir.ptr<!u8i>}> : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant linkonce_odr comdat @_ZTV1EIlE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1EIlE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1EIlED1Ev> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1EIlED0Ev> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !{{.*}}align(8)
+// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTS1EIlE = #cir.const_array<"1EIlE" : !cir.array<!s8i x 5>, trailing_zeros> : !cir.array<!s8i x 6> align(1)
+// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTI1EIlE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1EIlE> : !cir.ptr<!u8i>}> : !{{.*}}align(8)
 // LLVM-DAG: @_ZTV1EIlE = linkonce_odr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI1EIlE, ptr @_ZN1EIlED1Ev, ptr @_ZN1EIlED0Ev] }, comdat, align 8
 // LLVM-DAG: @_ZTS1EIlE = linkonce_odr constant [6 x i8] c"1EIlE\00", comdat, align 1
 // LLVM-DAG: @_ZTI1EIlE = linkonce_odr constant { ptr, ptr } { ptr getelementptr {{.*}}({{.*}}, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 {{.*}}), ptr @_ZTS1EIlE }, comdat
 
 // F<long> is an implicit template instantiation with no key function,
 // so its vtable should have linkonce_odr linkage.
-// CIR-DAG: cir.global "private" constant linkonce_odr comdat @_ZTV1FIlE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1FIlE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1FIlE3fooEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTS1FIlE = #cir.const_array<"1FIlE" : !cir.array<!s8i x 5>, trailing_zeros> : !cir.array<!s8i x 6> {alignment = 1 : i64}
-// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTI1FIlE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1FIlE> : !cir.ptr<!u8i>}> : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant linkonce_odr comdat @_ZTV1FIlE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1FIlE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1FIlE3fooEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}align(8)
+// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTS1FIlE = #cir.const_array<"1FIlE" : !cir.array<!s8i x 5>, trailing_zeros> : !cir.array<!s8i x 6> align(1)
+// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTI1FIlE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1FIlE> : !cir.ptr<!u8i>}> : !{{.*}}align(8)
 // LLVM-DAG: @_ZTV1FIlE = linkonce_odr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1FIlE, ptr @_ZN1FIlE3fooEv] }, comdat, align 8
 // LLVM-DAG: @_ZTS1FIlE = linkonce_odr constant [6 x i8] c"1FIlE\00", comdat, align 1
 // LLVM-DAG: @_ZTI1FIlE = linkonce_odr constant { ptr, ptr } { ptr getelementptr {{.*}}({{.*}}, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 {{.*}}), ptr @_ZTS1FIlE }, comdat
 
 // F<int> is an explicit template instantiation declaration without a
 // key function, so its vtable should have external linkage.
-// CIR-DAG: cir.global "private" constant external @_ZTV1FIiE : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant external @_ZTV1FIiE : !{{.*}}align(8)
 // LLVM-DAG: @_ZTV1FIiE = external constant { [3 x ptr] }, align 8
 
 // E<int> is an explicit template instantiation declaration. It has a
@@ -191,37 +191,37 @@ void use_F() {
 // so we can mark it as external (without optimizations) and
 // available_externally (with optimizations) because all of the inline
 // virtual functions have been emitted.
-// CIR-DAG: cir.global "private" constant external @_ZTV1EIiE : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant external @_ZTV1EIiE : !{{.*}}align(8)
 // LLVM-DAG: @_ZTV1EIiE = external constant { [4 x ptr] }, align 8
 
 // The anonymous struct for e has no linkage, so the vtable should have
 // internal linkage.
-// CIR-DAG: cir.global "private" constant internal dso_local @_ZTV3$_0 = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI3$_0> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1D1fEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global constant internal dso_local @_ZTS3$_0 = #cir.const_array<"3$_0" : !cir.array<!s8i x 4>, trailing_zeros> : !cir.array<!s8i x 5> {alignment = 1 : i64}
-// CIR-DAG: cir.global constant internal @_ZTI3$_0 = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv120__si_class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS3$_0> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1D> : !cir.ptr<!u8i>}> : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant internal dso_local @_ZTV3$_0 = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI3$_0> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1D1fEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}align(8)
+// CIR-DAG: cir.global constant internal dso_local @_ZTS3$_0 = #cir.const_array<"3$_0" : !cir.array<!s8i x 4>, trailing_zeros> : !cir.array<!s8i x 5> align(1)
+// CIR-DAG: cir.global constant internal @_ZTI3$_0 = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv120__si_class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS3$_0> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1D> : !cir.ptr<!u8i>}> : !{{.*}}align(8)
 // LLVM-DAG: @"_ZTV3$_0" = internal constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @"_ZTI3$_0", ptr @_ZN1D1fEv] }, align 8
 // LLVM-DAG: @"_ZTS3$_0" = internal constant [5 x i8] c"3$_0\00", align 1
 // LLVM-DAG: @"_ZTI3$_0" = internal constant { ptr, ptr, ptr } { ptr getelementptr {{.*}}({{.*}}, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 {{.*}}), ptr @"_ZTS3$_0", ptr @_ZTI1D }, align 8
 
 // The A vtable should have internal linkage since it is inside an anonymous 
 // namespace.
-// CIR-DAG: cir.global "private" constant internal dso_local @_ZTVN12_GLOBAL__N_11AE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTIN12_GLOBAL__N_11AE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN12_GLOBAL__N_11A1fEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global constant internal dso_local @_ZTSN12_GLOBAL__N_11AE = #cir.const_array<"N12_GLOBAL__N_11AE" : !cir.array<!s8i x 18>, trailing_zeros> : !cir.array<!s8i x 19> {alignment = 1 : i64}
-// CIR-DAG: cir.global constant internal @_ZTIN12_GLOBAL__N_11AE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTSN12_GLOBAL__N_11AE> : !cir.ptr<!u8i>}> : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant internal dso_local @_ZTVN12_GLOBAL__N_11AE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTIN12_GLOBAL__N_11AE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN12_GLOBAL__N_11A1fEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}align(8)
+// CIR-DAG: cir.global constant internal dso_local @_ZTSN12_GLOBAL__N_11AE = #cir.const_array<"N12_GLOBAL__N_11AE" : !cir.array<!s8i x 18>, trailing_zeros> : !cir.array<!s8i x 19> align(1)
+// CIR-DAG: cir.global constant internal @_ZTIN12_GLOBAL__N_11AE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTSN12_GLOBAL__N_11AE> : !cir.ptr<!u8i>}> : !{{.*}}align(8)
 // LLVM-DAG: @_ZTVN12_GLOBAL__N_11AE = internal constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTIN12_GLOBAL__N_11AE, ptr @_ZN12_GLOBAL__N_11A1fEv] }, align 8
 // LLVM-DAG: @_ZTSN12_GLOBAL__N_11AE = internal constant [19 x i8] c"N12_GLOBAL__N_11AE\00", align 1
 // LLVM-DAG: @_ZTIN12_GLOBAL__N_11AE = internal constant { ptr, ptr } { ptr getelementptr {{.*}}({{.*}}, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 {{.*}}), ptr @_ZTSN12_GLOBAL__N_11AE }, align 8
 
 // F<char> is an explicit specialization without a key function, so
 // its vtable should have linkonce_odr linkage.
-// CIR-DAG: cir.global "private" constant linkonce_odr comdat @_ZTV1FIcE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1FIcE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1FIcE3fooEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTS1FIcE = #cir.const_array<"1FIcE" : !cir.array<!s8i x 5>, trailing_zeros> : !cir.array<!s8i x 6> {alignment = 1 : i64}
-// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTI1FIcE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1FIcE> : !cir.ptr<!u8i>}> : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant linkonce_odr comdat @_ZTV1FIcE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1FIcE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1FIcE3fooEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !{{.*}}align(8)
+// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTS1FIcE = #cir.const_array<"1FIcE" : !cir.array<!s8i x 5>, trailing_zeros> : !cir.array<!s8i x 6> align(1)
+// CIR-DAG: cir.global constant linkonce_odr comdat @_ZTI1FIcE = #cir.typeinfo<{#cir.global_view<@_ZTVN10__cxxabiv117__class_type_infoE, [2 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTS1FIcE> : !cir.ptr<!u8i>}> : !{{.*}}align(8)
 // LLVM-DAG: @_ZTV1FIcE = linkonce_odr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1FIcE, ptr @_ZN1FIcE3fooEv] }, comdat, align 8
 // LLVM-DAG: @_ZTS1FIcE = linkonce_odr constant [6 x i8] c"1FIcE\00", comdat, align 1
 // LLVM-DAG: @_ZTI1FIcE = linkonce_odr constant { ptr, ptr } { ptr getelementptr {{.*}}({{.*}}, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 {{.*}}), ptr @_ZTS1FIcE }, comdat
 
-// CIR-DAG: cir.global "private" constant linkonce_odr comdat @_ZTV1GIiE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1GIiE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1GIiE2f0Ev> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1GIiE2f1Ev> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant linkonce_odr comdat @_ZTV1GIiE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1GIiE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1GIiE2f0Ev> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1GIiE2f1Ev> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !{{.*}}align(8)
 // LLVM-DAG: @_ZTV1GIiE = linkonce_odr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI1GIiE, ptr @_ZN1GIiE2f0Ev, ptr @_ZN1GIiE2f1Ev] }, comdat, align 8
 template <typename T>
 class G {
@@ -238,7 +238,7 @@ void G_f0()  { new G<int>(); }
 
 // H<int> has a key function without a body but it's a template instantiation
 // so its VTable must be emitted.
-// CIR-DAG: cir.global "private" constant linkonce_odr comdat @_ZTV1HIiE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1HIiE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1HIiED1Ev> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1HIiED0Ev> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !{{.*}}{alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant linkonce_odr comdat @_ZTV1HIiE = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZTI1HIiE> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1HIiED1Ev> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1HIiED0Ev> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !{{.*}}align(8)
 // LLVM-DAG: @_ZTV1HIiE = linkonce_odr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI1HIiE, ptr @_ZN1HIiED1Ev, ptr @_ZN1HIiED0Ev] }, comdat, align 8
 template <typename T>
 class H {
@@ -253,8 +253,8 @@ void use_H() {
 // I<int> has an explicit instantiation declaration and needs a VTT and
 // construction vtables.
 
-// CIR-DAG: cir.global "private" constant external @_ZTV1IIiE : !{{.*}}{alignment = 8 : i64}
-// CIR-DAG: cir.global "private" constant external @_ZTT1IIiE : !cir.array<!cir.ptr<!u8i> x 4> {alignment = 8 : i64}
+// CIR-DAG: cir.global "private" constant external @_ZTV1IIiE : !{{.*}}align(8)
+// CIR-DAG: cir.global "private" constant external @_ZTT1IIiE : !cir.array<!cir.ptr<!u8i> x 4> align(8)
 // LLVM-DAG: @_ZTV1IIiE = external constant { [5 x ptr] }, align 8
 // LLVM-DAG: @_ZTT1IIiE = external {{.*}}constant [4 x ptr], align 8
 struct VBase1 { virtual void f(); }; struct VBase2 : virtual VBase1 {};

diff  --git a/clang/test/CIR/CodeGenCXX/zero_init_bases.cpp b/clang/test/CIR/CodeGenCXX/zero_init_bases.cpp
index e548717d7ca66..22508f0ed5c0c 100644
--- a/clang/test/CIR/CodeGenCXX/zero_init_bases.cpp
+++ b/clang/test/CIR/CodeGenCXX/zero_init_bases.cpp
@@ -33,7 +33,7 @@ struct VirtualInherits : virtual Base1, virtual Base2 {
 // LLVM: %struct.VirtualInherits = type <{ ptr, i32, i32, i32, %struct.Base1, %struct.Base2, [4 x i8] }>
 //
 Inherits I;
-// CIR: cir.global external @I = #cir.zero : !rec_Inherits {alignment = 4 : i64}
+// CIR: cir.global external @I = #cir.zero : !rec_Inherits align(4)
 // LLVM: @I = global %struct.Inherits zeroinitializer, align 4
 
 Inherits I2 {{1,2,3},{1.1, 2.2, 3.3}, 4, 5, 6};
@@ -45,9 +45,9 @@ VirtualInherits VI;
 // CIR-BEFORE: cir.global external @VI = ctor : !rec_VirtualInherits {
 // CIR-BEFORE:   %[[GET_GLOB:.*]] = cir.get_global @VI : !cir.ptr<!rec_VirtualInherits>
 // CIR-BEFORE:   cir.call @_ZN15VirtualInheritsC1Ev(%[[GET_GLOB]]) nothrow : (!cir.ptr<!rec_VirtualInherits> {llvm.align = 8 : i64, llvm.dereferenceable = 20 : i64, llvm.nonnull, llvm.noundef}) -> ()
-// CIR-BEFORE: } {alignment = 8 : i64, ast = #cir.var.decl.ast}
+// CIR-BEFORE: } align(8) ast(#cir.var.decl.ast)
 //
-// CIR-AFTER: cir.global external @VI = #cir.zero : !rec_VirtualInherits {alignment = 8 : i64, ast = #cir.var.decl.ast}
+// CIR-AFTER: cir.global external @VI = #cir.zero : !rec_VirtualInherits align(8) ast(#cir.var.decl.ast)
 // CIR-AFTER: cir.func {{.*}}@__cxx_global_var_init() {
 // CIR-AFTER:   %[[GET_GLOB:.*]] = cir.get_global @VI : !cir.ptr<!rec_VirtualInherits> loc(#loc12)
 // CIR-AFTER:   cir.call @_ZN15VirtualInheritsC1Ev(%[[GET_GLOB]]) nothrow : (!cir.ptr<!rec_VirtualInherits> {llvm.align = 8 : i64, llvm.dereferenceable = 20 : i64, llvm.nonnull, llvm.noundef}) -> ()

diff  --git a/clang/test/CIR/IR/attribute-visibility.cir b/clang/test/CIR/IR/attribute-visibility.cir
index e4f09a9d657cf..46a13fd6957c0 100644
--- a/clang/test/CIR/IR/attribute-visibility.cir
+++ b/clang/test/CIR/IR/attribute-visibility.cir
@@ -2,17 +2,17 @@
 
 !s32i = !cir.int<s, 32>
 module {
-  cir.global external dso_local @normal_var = #cir.int<10> : !s32i {alignment = 4 : i64}
-  // CHECK: cir.global external dso_local @normal_var = #cir.int<10> : !s32i {alignment = 4 : i64}
+  cir.global external dso_local @normal_var = #cir.int<10> : !s32i align(4)
+  // CHECK: cir.global external dso_local @normal_var = #cir.int<10> : !s32i align(4)
 
-  cir.global hidden external dso_local @hidden_var = #cir.int<10> : !s32i {alignment = 4 : i64}
-  // CHECK: cir.global hidden external dso_local @hidden_var = #cir.int<10> : !s32i {alignment = 4 : i64}
+  cir.global hidden external dso_local @hidden_var = #cir.int<10> : !s32i align(4)
+  // CHECK: cir.global hidden external dso_local @hidden_var = #cir.int<10> : !s32i align(4)
 
-  cir.global "private" internal dso_local @normal_static_var = #cir.int<10> : !s32i {alignment = 4 : i64}
-  // CHECK: cir.global "private" internal dso_local @normal_static_var = #cir.int<10> : !s32i {alignment = 4 : i64}
+  cir.global "private" internal dso_local @normal_static_var = #cir.int<10> : !s32i align(4)
+  // CHECK: cir.global "private" internal dso_local @normal_static_var = #cir.int<10> : !s32i align(4)
 
-  cir.global "private" hidden internal dso_local @hidden_static_var = #cir.int<10> : !s32i {alignment = 4 : i64}
-  // CHECK: cir.global "private" hidden internal dso_local @hidden_static_var = #cir.int<10> : !s32i {alignment = 4 : i64}
+  cir.global "private" hidden internal dso_local @hidden_static_var = #cir.int<10> : !s32i align(4)
+  // CHECK: cir.global "private" hidden internal dso_local @hidden_static_var = #cir.int<10> : !s32i align(4)
 
   cir.func no_inline no_proto dso_local @normal_func() {
     cir.return

diff  --git a/clang/test/CIR/IR/fenv.cir b/clang/test/CIR/IR/fenv.cir
index cb0a9287deb44..2c938c2c74c70 100644
--- a/clang/test/CIR/IR/fenv.cir
+++ b/clang/test/CIR/IR/fenv.cir
@@ -5,8 +5,8 @@
 // CHECK-LABEL: cir.func @fadd_fenv
 cir.func @fadd_fenv(%a: !cir.float, %b: !cir.float) {
   // All fields present.
-  // CHECK: cir.fadd %{{.*}}, %{{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
-  %0 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+  // CHECK: cir.fadd %{{.*}}, %{{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
+  %0 = cir.fadd %a, %b : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 
   // No fenv attribute at all.
   // CHECK: cir.fadd %{{.*}}, %{{.*}} : !cir.float
@@ -14,24 +14,24 @@ cir.func @fadd_fenv(%a: !cir.float, %b: !cir.float) {
   %1 = cir.fadd %a, %b : !cir.float
 
   // Empty fenv attribute.
-  // CHECK: cir.fadd %{{.*}}, %{{.*}} : !cir.float {fenv = #cir.fenv<>}
-  %2 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<>}
+  // CHECK: cir.fadd %{{.*}}, %{{.*}} : !cir.float fenv<>
+  %2 = cir.fadd %a, %b : !cir.float fenv<>
   cir.return
 }
 
 // Roundtrip each binary floating-point op with a fenv attribute.
 // CHECK-LABEL: cir.func @fp_binops_fenv
 cir.func @fp_binops_fenv(%a: !cir.double, %b: !cir.double) {
-  // CHECK: cir.fadd %{{.*}}, %{{.*}} : !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest>}
-  %0 = cir.fadd %a, %b : !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearest>}
-  // CHECK: cir.fsub %{{.*}}, %{{.*}} : !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = downward>}
-  %1 = cir.fsub %a, %b : !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = downward>}
-  // CHECK: cir.fmul %{{.*}}, %{{.*}} : !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = upward>}
-  %2 = cir.fmul %a, %b : !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = upward>}
-  // CHECK: cir.fdiv %{{.*}}, %{{.*}} : !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = upwardzero>}
-  %3 = cir.fdiv %a, %b : !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = upwardzero>}
-  // CHECK: cir.frem %{{.*}}, %{{.*}} : !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearestaway>}
-  %4 = cir.frem %a, %b : !cir.double {fenv = #cir.fenv<dynamic_rounding_mode = tonearestaway>}
+  // CHECK: cir.fadd %{{.*}}, %{{.*}} : !cir.double fenv<dynamic_rounding_mode = tonearest>
+  %0 = cir.fadd %a, %b : !cir.double fenv<dynamic_rounding_mode = tonearest>
+  // CHECK: cir.fsub %{{.*}}, %{{.*}} : !cir.double fenv<dynamic_rounding_mode = downward>
+  %1 = cir.fsub %a, %b : !cir.double fenv<dynamic_rounding_mode = downward>
+  // CHECK: cir.fmul %{{.*}}, %{{.*}} : !cir.double fenv<dynamic_rounding_mode = upward>
+  %2 = cir.fmul %a, %b : !cir.double fenv<dynamic_rounding_mode = upward>
+  // CHECK: cir.fdiv %{{.*}}, %{{.*}} : !cir.double fenv<dynamic_rounding_mode = upwardzero>
+  %3 = cir.fdiv %a, %b : !cir.double fenv<dynamic_rounding_mode = upwardzero>
+  // CHECK: cir.frem %{{.*}}, %{{.*}} : !cir.double fenv<dynamic_rounding_mode = tonearestaway>
+  %4 = cir.frem %a, %b : !cir.double fenv<dynamic_rounding_mode = tonearestaway>
   cir.return
 }
 
@@ -46,21 +46,21 @@ cir.func @fneg_fenv(%a: !cir.float, %v: !cir.vector<4 x !cir.float>) {
 
 // CHECK-LABEL: cir.func @unary_fp_builtin_fenv
 cir.func @unary_fp_builtin_fenv(%a: !cir.float) {
-  // CHECK: cir.sqrt %{{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown>}
-  %0 = cir.sqrt %a : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown>}
-  // CHECK: cir.cos %{{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = downward>}
-  %1 = cir.cos %a : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = downward>}
-  // CHECK: cir.floor %{{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upwardzero>}
-  %2 = cir.floor %a : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upwardzero>}
+  // CHECK: cir.sqrt %{{.*}} : !cir.float fenv<dynamic_rounding_mode = unknown>
+  %0 = cir.sqrt %a : !cir.float fenv<dynamic_rounding_mode = unknown>
+  // CHECK: cir.cos %{{.*}} : !cir.float fenv<dynamic_rounding_mode = downward>
+  %1 = cir.cos %a : !cir.float fenv<dynamic_rounding_mode = downward>
+  // CHECK: cir.floor %{{.*}} : !cir.float fenv<dynamic_rounding_mode = upwardzero>
+  %2 = cir.floor %a : !cir.float fenv<dynamic_rounding_mode = upwardzero>
   cir.return
 }
 
 // CHECK-LABEL: cir.func @binary_fp_builtin_fenv
 cir.func @binary_fp_builtin_fenv(%a: !cir.float, %b: !cir.float) {
-  // CHECK: cir.copysign %{{.*}}, %{{.*}} : !cir.float {fenv = #cir.fenv<strict_except = true>}
-  %0 = cir.copysign %a, %b : !cir.float {fenv = #cir.fenv<strict_except = true>}
-  // CHECK: cir.pow %{{.*}}, %{{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, strict_except = true>}
-  %1 = cir.pow %a, %b : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, strict_except = true>}
+  // CHECK: cir.copysign %{{.*}}, %{{.*}} : !cir.float fenv<strict_except = true>
+  %0 = cir.copysign %a, %b : !cir.float fenv<strict_except = true>
+  // CHECK: cir.pow %{{.*}}, %{{.*}} : !cir.float fenv<dynamic_rounding_mode = tonearest, strict_except = true>
+  %1 = cir.pow %a, %b : !cir.float fenv<dynamic_rounding_mode = tonearest, strict_except = true>
   // CHECK: cir.atan2 %{{.*}}, %{{.*}} : !cir.float
   // CHECK-NOT: fenv
   %2 = cir.atan2 %a, %b : !cir.float
@@ -69,12 +69,12 @@ cir.func @binary_fp_builtin_fenv(%a: !cir.float, %b: !cir.float) {
 
 // CHECK-LABEL: cir.func @unary_fp_to_int_builtin_fenv
 cir.func @unary_fp_to_int_builtin_fenv(%a: !cir.float) -> !s32i {
-  // CHECK: cir.lround %{{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest>}
-  %0 = cir.lround %a : !cir.float -> !s32i {fenv = #cir.fenv<dynamic_rounding_mode = tonearest>}
-  // CHECK: cir.llround %{{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<except_mode = unmasked>}
-  %1 = cir.llround %a : !cir.float -> !s32i {fenv = #cir.fenv<except_mode = unmasked>}
-  // CHECK: cir.lrint %{{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<>}
-  %2 = cir.lrint %a : !cir.float -> !s32i {fenv = #cir.fenv<>}
+  // CHECK: cir.lround %{{.*}} : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest>
+  %0 = cir.lround %a : !cir.float -> !s32i fenv<dynamic_rounding_mode = tonearest>
+  // CHECK: cir.llround %{{.*}} : !cir.float -> !s32i fenv<except_mode = unmasked>
+  %1 = cir.llround %a : !cir.float -> !s32i fenv<except_mode = unmasked>
+  // CHECK: cir.lrint %{{.*}} : !cir.float -> !s32i fenv<>
+  %2 = cir.lrint %a : !cir.float -> !s32i fenv<>
   // CHECK: cir.llrint %{{.*}} : !cir.float -> !s32i
   // CHECK-NOT: fenv
   %3 = cir.llrint %a : !cir.float -> !s32i
@@ -86,20 +86,20 @@ cir.func @ternary_fp_builtin_fenv(%a: !cir.float, %b: !cir.float, %c: !cir.float
                                   %va: !cir.vector<4 x !cir.float>,
                                   %vb: !cir.vector<4 x !cir.float>,
                                   %vc: !cir.vector<4 x !cir.float>) {
-  // CHECK: cir.fma %{{.*}}, %{{.*}}, %{{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = downward, strict_except = true>}
-  %0 = cir.fma %a, %b, %c : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = downward, strict_except = true>}
+  // CHECK: cir.fma %{{.*}}, %{{.*}}, %{{.*}} : !cir.float fenv<dynamic_rounding_mode = downward, strict_except = true>
+  %0 = cir.fma %a, %b, %c : !cir.float fenv<dynamic_rounding_mode = downward, strict_except = true>
   // CHECK: cir.fma %{{.*}}, %{{.*}}, %{{.*}} : !cir.float
   // CHECK-NOT: fenv
   %1 = cir.fma %a, %b, %c : !cir.float
-  // CHECK: cir.fmuladd %{{.*}}, %{{.*}}, %{{.*}} : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = downward, strict_except = true>}
-  %2 = cir.fmuladd %a, %b, %c : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = downward, strict_except = true>}
+  // CHECK: cir.fmuladd %{{.*}}, %{{.*}}, %{{.*}} : !cir.float fenv<dynamic_rounding_mode = downward, strict_except = true>
+  %2 = cir.fmuladd %a, %b, %c : !cir.float fenv<dynamic_rounding_mode = downward, strict_except = true>
   // CHECK: cir.fmuladd %{{.*}}, %{{.*}}, %{{.*}} : !cir.float
   // CHECK-NOT: fenv
   %3 = cir.fmuladd %a, %b, %c : !cir.float
-  // CHECK: cir.fma %{{.*}}, %{{.*}}, %{{.*}} : !cir.vector<4 x !cir.float> {fenv = #cir.fenv<strict_except = true>}
-  %4 = cir.fma %va, %vb, %vc : !cir.vector<4 x !cir.float> {fenv = #cir.fenv<strict_except = true>}
-  // CHECK: cir.fmuladd %{{.*}}, %{{.*}}, %{{.*}} : !cir.vector<4 x !cir.float> {fenv = #cir.fenv<strict_except = true>}
-  %5 = cir.fmuladd %va, %vb, %vc : !cir.vector<4 x !cir.float> {fenv = #cir.fenv<strict_except = true>}
+  // CHECK: cir.fma %{{.*}}, %{{.*}}, %{{.*}} : !cir.vector<4 x !cir.float> fenv<strict_except = true>
+  %4 = cir.fma %va, %vb, %vc : !cir.vector<4 x !cir.float> fenv<strict_except = true>
+  // CHECK: cir.fmuladd %{{.*}}, %{{.*}}, %{{.*}} : !cir.vector<4 x !cir.float> fenv<strict_except = true>
+  %5 = cir.fmuladd %va, %vb, %vc : !cir.vector<4 x !cir.float> fenv<strict_except = true>
   // CHECK: cir.fmuladd %{{.*}}, %{{.*}}, %{{.*}} : !cir.vector<4 x !cir.float>
   // CHECK-NOT: fenv
   %6 = cir.fmuladd %va, %vb, %vc : !cir.vector<4 x !cir.float>
@@ -108,12 +108,12 @@ cir.func @ternary_fp_builtin_fenv(%a: !cir.float, %b: !cir.float, %c: !cir.float
 
 // CHECK-LABEL: cir.func @cast_fenv
 cir.func @cast_fenv(%a: !cir.float, %b: !cir.double, %i: !s32i) {
-  // CHECK: cir.cast floating %{{.*}} : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest>}
-  %0 = cir.cast floating %b : !cir.double -> !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest>}
-  // CHECK: cir.cast int_to_float %{{.*}} : !s32i -> !cir.float {fenv = #cir.fenv<>}
-  %1 = cir.cast int_to_float %i : !s32i -> !cir.float {fenv = #cir.fenv<>}
-  // CHECK: cir.cast float_to_int %{{.*}} : !cir.float -> !s32i {fenv = #cir.fenv<except_mode = unmasked, strict_except = true>}
-  %2 = cir.cast float_to_int %a : !cir.float -> !s32i {fenv = #cir.fenv<except_mode = unmasked, strict_except = true>}
+  // CHECK: cir.cast floating %{{.*}} : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest>
+  %0 = cir.cast floating %b : !cir.double -> !cir.float fenv<dynamic_rounding_mode = tonearest>
+  // CHECK: cir.cast int_to_float %{{.*}} : !s32i -> !cir.float fenv<>
+  %1 = cir.cast int_to_float %i : !s32i -> !cir.float fenv<>
+  // CHECK: cir.cast float_to_int %{{.*}} : !cir.float -> !s32i fenv<except_mode = unmasked, strict_except = true>
+  %2 = cir.cast float_to_int %a : !cir.float -> !s32i fenv<except_mode = unmasked, strict_except = true>
   // CHECK: cir.cast float_to_bool %{{.*}} : !cir.float -> !cir.bool
   // CHECK-NOT: fenv
   %3 = cir.cast float_to_bool %a : !cir.float -> !cir.bool
@@ -124,14 +124,13 @@ cir.func @cast_fenv(%a: !cir.float, %b: !cir.double, %i: !s32i) {
 cir.func @cmp_fenv(%a: !cir.float, %b: !cir.float,
                     %va: !cir.vector<4 x !cir.float>,
                     %vb: !cir.vector<4 x !cir.float>) {
-  // CHECK: cir.cmp lt %{{.*}}, %{{.*}} : !cir.float {fenv = #cir.fenv<except_mode = unmasked>}
-  %0 = cir.cmp lt %a, %b : !cir.float {fenv = #cir.fenv<except_mode = unmasked>}
-  // CHECK: cir.cmp eq %{{.*}}, %{{.*}} : !cir.float {fenv = #cir.fenv<>}
-  %1 = cir.cmp eq %a, %b : !cir.float {fenv = #cir.fenv<>}
-  // CHECK: cir.vec.cmp(gt, %{{.*}}, %{{.*}}) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> {fenv = #cir.fenv<strict_except = true>}
-  %2 = cir.vec.cmp(gt, %va, %vb) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> {
-    fenv = #cir.fenv<strict_except = true>
-  }
+  // CHECK: cir.cmp lt %{{.*}}, %{{.*}} : !cir.float fenv<except_mode = unmasked>
+  %0 = cir.cmp lt %a, %b : !cir.float fenv<except_mode = unmasked>
+  // CHECK: cir.cmp eq %{{.*}}, %{{.*}} : !cir.float fenv<>
+  %1 = cir.cmp eq %a, %b : !cir.float fenv<>
+  // CHECK: cir.vec.cmp(gt, %{{.*}}, %{{.*}}) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> fenv<strict_except = true>
+  %2 = cir.vec.cmp(gt, %va, %vb) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i>
+       fenv<strict_except = true>
   // CHECK: cir.cmp ne %{{.*}}, %{{.*}} : !cir.float
   // CHECK-NOT: fenv
   %3 = cir.cmp ne %a, %b : !cir.float

diff  --git a/clang/test/CIR/IR/global.cir b/clang/test/CIR/IR/global.cir
index 368b0e240121e..ce7bce984b922 100644
--- a/clang/test/CIR/IR/global.cir
+++ b/clang/test/CIR/IR/global.cir
@@ -56,6 +56,7 @@ module attributes {cir.triple = "x86_64-unknown-linux-gnu"} {
   cir.global external @gi = #cir.int<0> : !s32i
   cir.global external @gi_past_end = #cir.global_offset<@gi, 4> : !cir.ptr<!s32i>
   cir.global external @gi_before = #cir.global_offset<@gi, -4> : !cir.ptr<!s32i>
+  cir.global "private" external @strict_fp : !s32i strictfp
 }
 
 // CHECK: cir.global external @c = #cir.int<0> : !s8i
@@ -101,3 +102,4 @@ module attributes {cir.triple = "x86_64-unknown-linux-gnu"} {
 // CHECK: cir.global external @gi = #cir.int<0> : !s32i
 // CHECK: cir.global external @gi_past_end = #cir.global_offset<@gi, 4> : !cir.ptr<!s32i>
 // CHECK: cir.global external @gi_before = #cir.global_offset<@gi, -4> : !cir.ptr<!s32i>
+// CHECK: cir.global "private" external @strict_fp : !s32i strictfp

diff  --git a/clang/test/CIR/IR/invalid-cast.cir b/clang/test/CIR/IR/invalid-cast.cir
index 9d7f4a6442837..67e3dbe68306e 100644
--- a/clang/test/CIR/IR/invalid-cast.cir
+++ b/clang/test/CIR/IR/invalid-cast.cir
@@ -45,7 +45,7 @@ module {
 module {
   cir.func @fenv_on_integral(%i: !s32i) {
     // expected-error at +1 {{'fenv' is only valid for floating-point cast kinds}}
-    %0 = cir.cast integral %i : !s32i -> !s32i {fenv = #cir.fenv<>}
+    %0 = cir.cast integral %i : !s32i -> !s32i fenv<>
     cir.return
   }
 }
@@ -57,7 +57,7 @@ module {
 module {
   cir.func @fenv_on_int_to_bool(%i: !s32i) {
     // expected-error at +1 {{'fenv' is only valid for floating-point cast kinds}}
-    %0 = cir.cast int_to_bool %i : !s32i -> !cir.bool {fenv = #cir.fenv<>}
+    %0 = cir.cast int_to_bool %i : !s32i -> !cir.bool fenv<>
     cir.return
   }
 }
@@ -69,7 +69,7 @@ module {
 module {
   cir.func @fenv_on_ptr_to_int(%p: !cir.ptr<!s32i>) {
     // expected-error at +1 {{'fenv' is only valid for floating-point cast kinds}}
-    %0 = cir.cast ptr_to_int %p : !cir.ptr<!s32i> -> !s32i {fenv = #cir.fenv<>}
+    %0 = cir.cast ptr_to_int %p : !cir.ptr<!s32i> -> !s32i fenv<>
     cir.return
   }
 }
@@ -81,7 +81,7 @@ module {
 module {
   cir.func @fenv_on_bitcast(%p: !cir.ptr<!s32i>) {
     // expected-error at +1 {{'fenv' is only valid for floating-point cast kinds}}
-    %0 = cir.cast bitcast %p : !cir.ptr<!s32i> -> !cir.ptr<!cir.float> {fenv = #cir.fenv<>}
+    %0 = cir.cast bitcast %p : !cir.ptr<!s32i> -> !cir.ptr<!cir.float> fenv<>
     cir.return
   }
 }
@@ -93,7 +93,7 @@ module {
 module {
   cir.func @fenv_on_int_complex(%c: !cir.complex<!s32i>) {
     // expected-error at +1 {{'fenv' is only valid for floating-point cast kinds}}
-    %0 = cir.cast int_complex %c : !cir.complex<!s32i> -> !cir.complex<!s32i> {fenv = #cir.fenv<>}
+    %0 = cir.cast int_complex %c : !cir.complex<!s32i> -> !cir.complex<!s32i> fenv<>
     cir.return
   }
 }

diff  --git a/clang/test/CIR/IR/invalid-cmp.cir b/clang/test/CIR/IR/invalid-cmp.cir
index 2b5185f8977eb..25e09700c2d72 100644
--- a/clang/test/CIR/IR/invalid-cmp.cir
+++ b/clang/test/CIR/IR/invalid-cmp.cir
@@ -5,7 +5,7 @@
 module {
   cir.func @fenv_on_int_cmp(%a: !s32i, %b: !s32i) {
     // expected-error at +1 {{'fenv' is only valid for floating-point comparisons}}
-    %0 = cir.cmp eq %a, %b : !s32i {fenv = #cir.fenv<>}
+    %0 = cir.cmp eq %a, %b : !s32i fenv<>
     cir.return
   }
 }
@@ -17,7 +17,7 @@ module {
 module {
   cir.func @fenv_on_ptr_cmp(%a: !cir.ptr<!s32i>, %b: !cir.ptr<!s32i>) {
     // expected-error at +1 {{'fenv' is only valid for floating-point comparisons}}
-    %0 = cir.cmp ne %a, %b : !cir.ptr<!s32i> {fenv = #cir.fenv<>}
+    %0 = cir.cmp ne %a, %b : !cir.ptr<!s32i> fenv<>
     cir.return
   }
 }
@@ -31,9 +31,7 @@ module {
                                 %b: !cir.vector<4 x !s32i>) {
     // expected-error at +1 {{'fenv' is only valid for floating-point comparisons}}
     %0 = cir.vec.cmp(eq, %a, %b) : !cir.vector<4 x !s32i>,
-                                   !cir.vector<4 x !s32i> {
-      fenv = #cir.fenv<>
-    }
+                                   !cir.vector<4 x !s32i> fenv<>
     cir.return
   }
 }

diff  --git a/clang/test/CIR/IR/invalid-delete-array.cir b/clang/test/CIR/IR/invalid-delete-array.cir
index a9ac7c6355459..5dc4c9c8d6aec 100644
--- a/clang/test/CIR/IR/invalid-delete-array.cir
+++ b/clang/test/CIR/IR/invalid-delete-array.cir
@@ -9,13 +9,13 @@ module {
 
   cir.func @bad_delete_array_throw_without_dtor(%p: !cir.ptr<!rec_S>) {
     // expected-error at +1 {{'cir.delete_array' op 'dtor_may_throw' requires an 'element_dtor' to be present}}
-    cir.delete_array %p : !cir.ptr<!rec_S> dtor_may_throw {delete_fn = @_ZdaPvm, element_align = 1, delete_params = #cir.usual_delete_params<size = true>}
+    cir.delete_array %p : !cir.ptr<!rec_S> delete_fn(@_ZdaPvm) delete_params<size = true> dtor_may_throw element_align(1)
     cir.return
   }
 
   cir.func @bad_delete_array_throw_without_align(%p: !cir.ptr<!rec_S>) {
     // expected-error at +1 {{'cir.delete_array' op requires attribute 'element_align'}}
-    cir.delete_array %p : !cir.ptr<!rec_S> dtor_may_throw {delete_fn = @_ZdaPvm, dtor_may_throw = true, delete_params = #cir.usual_delete_params<size = true>}
+    "cir.delete_array"(%p) <{delete_fn = @_ZdaPvm, dtor_may_throw = true, delete_params = #cir.usual_delete_params<size = true>}> : (!cir.ptr<!rec_S>) -> ()
     cir.return
   }
 }

diff  --git a/clang/test/CIR/IR/invalid-static-local-info.cir b/clang/test/CIR/IR/invalid-static-local-info.cir
index c7c222510988f..1a2047aec2e45 100644
--- a/clang/test/CIR/IR/invalid-static-local-info.cir
+++ b/clang/test/CIR/IR/invalid-static-local-info.cir
@@ -20,5 +20,5 @@ module {
 module {
   // expected-error at +1 {{'static_local_guard' and 'static_local_info' must be present together}}
   cir.global "private" internal @_ZZ1fvE1x : !s32i
-    {static_local_info = #cir.static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>}
+    static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>
 }

diff  --git a/clang/test/CIR/IR/invalid-static-local.cir b/clang/test/CIR/IR/invalid-static-local.cir
index ee8d188c58f76..fef64ccac5077 100644
--- a/clang/test/CIR/IR/invalid-static-local.cir
+++ b/clang/test/CIR/IR/invalid-static-local.cir
@@ -23,7 +23,7 @@ module {
 
 // Global is marked static_local_guard, but get_global is not static_local
 cir.global "private" internal static_local_guard<"_ZGVZ1fvE1y"> @_ZZ1fvE1y : !s32i
-  {static_local_info = #cir.static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>}
+  static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>
 
 cir.func @test_static_local_mismatch_reverse() {
   // expected-error @below {{static_local attribute mismatch}}
@@ -41,7 +41,7 @@ module {
 
 // local_init is both static_local and thread_local
 cir.global "private" internal static_local_guard<"_ZGVZ1fvE1y"> @_ZZ1fvE1y : !s32i
-  {static_local_info = #cir.static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>}
+  static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>
 
 cir.func @test_static_local_and_tls() {
   %0 = cir.get_global static_local @_ZZ1fvE1y : !cir.ptr<!s32i>
@@ -65,7 +65,7 @@ module {
 
 // local_init not at function scope.
 cir.global "private" internal static_local_guard<"_ZGVZ1fvE1y"> @_ZZ1fvE1y : !s32i
-  {static_local_info = #cir.static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>}
+  static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>
 
 cir.global "private" internal @_AnotherGlobal = ctor : !s32i {
   // expected-error @below {{'cir.local_init' op expects ancestor op 'cir.func'}}

diff  --git a/clang/test/CIR/IR/invalid-tls.cir b/clang/test/CIR/IR/invalid-tls.cir
index 27dbe07d0bcc0..a7146c0bde737 100644
--- a/clang/test/CIR/IR/invalid-tls.cir
+++ b/clang/test/CIR/IR/invalid-tls.cir
@@ -18,7 +18,7 @@ module {
 module {
   // expected-error at +1{{op cannot have both static local and tls references}}
 cir.global "private" internal tls_model = tls_dyn tls_refs = <"asdf", "asdf", "asdf"> static_local_guard<"asdf"> @_ZZ1fvE1y : !s32i
-  {static_local_info = #cir.static_local_info<local = true, tls = dynamic, is_inline = false, tsk = undeclared>}
+  static_local_info<local = true, tls = dynamic, is_inline = false, tsk = undeclared>
 }
 
 // -----

diff  --git a/clang/test/CIR/IR/invalid-vtable.cir b/clang/test/CIR/IR/invalid-vtable.cir
index f16f26127ce19..f444a0ee5b539 100644
--- a/clang/test/CIR/IR/invalid-vtable.cir
+++ b/clang/test/CIR/IR/invalid-vtable.cir
@@ -37,7 +37,7 @@ module {
 !rec_anon_struct = !cir.struct<{}>
 module {
   // expected-error @below {{expected record type with one or more subtype}}
-  cir.global external @_ZTV1S = #cir.vtable<{}> : !rec_anon_struct {alignment = 8 : i64}
+  cir.global external @_ZTV1S = #cir.vtable<{}> : !rec_anon_struct align(8)
   cir.func private dso_local @_ZN1S3keyEv(%arg0: !cir.ptr<!rec_S>)
   cir.func private dso_local @_ZN1S6nonKeyEv(%arg0: !cir.ptr<!rec_S>)
 }
@@ -49,7 +49,7 @@ module {
 !rec_anon_struct = !cir.struct<{data !cir.ptr<!u8i>}>
 module {
   // expected-error @below {{expected constant array subtype}}
-  cir.global external @_ZTV1S = #cir.vtable<{#cir.ptr<null> : !cir.ptr<!u8i>}> : !rec_anon_struct {alignment = 8 : i64}
+  cir.global external @_ZTV1S = #cir.vtable<{#cir.ptr<null> : !cir.ptr<!u8i>}> : !rec_anon_struct align(8)
   cir.func private dso_local @_ZN1S3keyEv(%arg0: !cir.ptr<!rec_S>)
   cir.func private dso_local @_ZN1S6nonKeyEv(%arg0: !cir.ptr<!rec_S>)
 }
@@ -61,7 +61,7 @@ module {
 !rec_anon_struct = !cir.struct<{data !cir.array<!u64i x 4>}>
 module {
   // expected-error @below {{expected GlobalViewAttr or ConstPtrAttr}}
-  cir.global external @_ZTV1S = #cir.vtable<{#cir.const_array<[#cir.int<1> : !u64i, #cir.int<1> : !u64i, #cir.int<3> : !u64i, #cir.int<4> : !u64i]> : !cir.array<!u64i x 4>}> : !rec_anon_struct {alignment = 8 : i64}
+  cir.global external @_ZTV1S = #cir.vtable<{#cir.const_array<[#cir.int<1> : !u64i, #cir.int<1> : !u64i, #cir.int<3> : !u64i, #cir.int<4> : !u64i]> : !cir.array<!u64i x 4>}> : !rec_anon_struct align(8)
   cir.func private dso_local @_ZN1S3keyEv(%arg0: !cir.ptr<!rec_S>)
   cir.func private dso_local @_ZN1S6nonKeyEv(%arg0: !cir.ptr<!rec_S>)
 }
@@ -75,7 +75,7 @@ module {
 !rec_anon_struct = !cir.struct<{data !cir.array<!cir.ptr<!u8i> x 4>, data !cir.ptr<!u8i>}>
 module {
   // expected-error @below {{expected constant array subtype}}
-  cir.global external @_ZTV2S2 = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S3keyEv> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S6nonKeyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>, #cir.ptr<null> : !cir.ptr<!u8i>}> : !rec_anon_struct {alignment = 8 : i64}
+  cir.global external @_ZTV2S2 = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S3keyEv> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S6nonKeyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>, #cir.ptr<null> : !cir.ptr<!u8i>}> : !rec_anon_struct align(8)
 
   cir.func private dso_local @_ZN1S3keyEv(%arg0: !cir.ptr<!rec_S>)
   cir.func private dso_local @_ZN1S6nonKeyEv(%arg0: !cir.ptr<!rec_S>)
@@ -98,7 +98,7 @@ cir.func @reference_unknown_vtt() {
 !u32i = !cir.int<u, 32>
 !void = !cir.void
 !rec_anon_struct = !cir.struct<{data !cir.array<!cir.ptr<!u8i> x 4>}>
-cir.global external @_ZTV1S = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S3keyEv> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S6nonKeyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !rec_anon_struct {alignment = 8 : i64}
+cir.global external @_ZTV1S = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S3keyEv> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S6nonKeyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !rec_anon_struct align(8)
 cir.func @reference_non_vtt() {
   // expected-error @below {{'cir.vtt.address_point' op Expected constant array in initializer for global VTT '_ZTV1S'}}
   %0 = cir.vtt.address_point @_ZTV1S, offset = 1 -> !cir.ptr<!cir.ptr<!void>>
@@ -112,7 +112,7 @@ cir.func @reference_non_vtt() {
 !void = !cir.void
 !rec_anon_struct = !cir.struct<{data !cir.array<!cir.ptr<!u8i> x 4>}>
 !rec_C = !cir.struct<class "C" {data !cir.vptr}>
-cir.global linkonce_odr @_ZTT1C = #cir.const_array<[#cir.global_view<@_ZTV1C, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTC1C0_1B, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 2> {alignment = 8 : i64}
+cir.global linkonce_odr @_ZTT1C = #cir.const_array<[#cir.global_view<@_ZTV1C, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTC1C0_1B, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 2> align(8)
 cir.func @reference_name_and_value(%arg0: !cir.ptr<!rec_C>, %arg1: !cir.ptr<!cir.ptr<!void>>) {
   // expected-error @below {{'cir.vtt.address_point' op should use either a symbol or value, but not both}}
   %0 = cir.vtt.address_point @_ZTT1C %arg1 : !cir.ptr<!cir.ptr<!void>>, offset = 1 -> !cir.ptr<!cir.ptr<!void>>
@@ -126,7 +126,7 @@ cir.func @reference_name_and_value(%arg0: !cir.ptr<!rec_C>, %arg1: !cir.ptr<!cir
 !void = !cir.void
 !rec_anon_struct = !cir.struct<{data !cir.array<!cir.ptr<!u8i> x 4>}>
 !rec_C = !cir.struct<class "C" {data !cir.vptr}>
-cir.global linkonce_odr @_ZTT1C = #cir.const_array<[#cir.global_view<@_ZTV1C, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTC1C0_1B, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 2> {alignment = 8 : i64}
+cir.global linkonce_odr @_ZTT1C = #cir.const_array<[#cir.global_view<@_ZTV1C, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTC1C0_1B, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 2> align(8)
 cir.func @bad_return_type_for_vtt_addrpoint() {
   // expected-error @below {{result type must be '!cir.ptr<!cir.ptr<!cir.void>>', but provided result type is '!cir.ptr<!cir.int<u, 8>>'}}
   %0 = cir.vtt.address_point @_ZTT1C, offset = 1 -> !cir.ptr<!u8i>

diff  --git a/clang/test/CIR/IR/static-local-info.cir b/clang/test/CIR/IR/static-local-info.cir
index c0d883f71d596..74d5494cac64b 100644
--- a/clang/test/CIR/IR/static-local-info.cir
+++ b/clang/test/CIR/IR/static-local-info.cir
@@ -8,14 +8,14 @@
 
 module {
   cir.global "private" internal static_local_guard<"_ZGV7regular"> @regular = #cir.int<0> : !s32i
-    {static_local_info = #cir.static_local_info<
-       local = true, tls = none, is_inline = false, tsk = undeclared>}
+    static_local_info<
+       local = true, tls = none, is_inline = false, tsk = undeclared>
   // CHECK: @regular
-  // CHECK-SAME: static_local_info = #cir.static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>
+  // CHECK-SAME: static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>
 
   cir.global "private" internal static_local_guard<"_ZGV3tls"> @tls = #cir.int<0> : !s32i
-    {static_local_info = #cir.static_local_info<
-       local = true, tls = dynamic, is_inline = true, tsk = implicit_instantiation>}
+    static_local_info<
+       local = true, tls = dynamic, is_inline = true, tsk = implicit_instantiation>
   // CHECK: @tls
-  // CHECK-SAME: static_local_info = #cir.static_local_info<local = true, tls = dynamic, is_inline = true, tsk = implicit_instantiation>
+  // CHECK-SAME: static_local_info<local = true, tls = dynamic, is_inline = true, tsk = implicit_instantiation>
 }

diff  --git a/clang/test/CIR/IR/static-local.cir b/clang/test/CIR/IR/static-local.cir
index 41f76bb58a6f5..b398326a84be6 100644
--- a/clang/test/CIR/IR/static-local.cir
+++ b/clang/test/CIR/IR/static-local.cir
@@ -9,20 +9,20 @@ module {
 // be paired, matching what CIRGen emits, so each guarded global also carries
 // the info attribute here.
 cir.global "private" internal static_local_guard<"_ZGVZ1fvE1x"> @_ZZ1fvE1x : !s32i
-  {static_local_info = #cir.static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>}
+  static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>
 // CHECK: cir.global "private" internal static_local_guard<"_ZGVZ1fvE1x"> @_ZZ1fvE1x : !s32i
 
 cir.global "private" internal static_local_guard<"_HasInitGuard"> @_HasInit : !s32i
-  {static_local_info = #cir.static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>}
+  static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>
 // CHECK: cir.global "private" internal static_local_guard<"_HasInitGuard"> @_HasInit : !s32i
 cir.global "private" internal static_local_guard<"_HasInitGuard2"> @_HasInit2 : !s32i
-  {static_local_info = #cir.static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>}
+  static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>
 // CHECK: cir.global "private" internal static_local_guard<"_HasInitGuard2"> @_HasInit2 : !s32i
 cir.global "private" internal static_local_guard<"_HasInitGuard3"> @_HasInit3 : !s32i
-  {static_local_info = #cir.static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>}
+  static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>
 // CHECK: cir.global "private" internal static_local_guard<"_HasInitGuard3"> @_HasInit3 : !s32i
 cir.global "private" internal static_local_guard<"_HasInitGuard4"> @_HasInit4 : !s32i
-  {static_local_info = #cir.static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>}
+  static_local_info<local = true, tls = none, is_inline = false, tsk = undeclared>
 // CHECK: cir.global "private" internal static_local_guard<"_HasInitGuard4"> @_HasInit4 : !s32i
 
 cir.func @test_static_local() {

diff  --git a/clang/test/CIR/IR/string-trailing-zeros.cir b/clang/test/CIR/IR/string-trailing-zeros.cir
index d64bb19dca837..56cd5fc27f293 100644
--- a/clang/test/CIR/IR/string-trailing-zeros.cir
+++ b/clang/test/CIR/IR/string-trailing-zeros.cir
@@ -5,8 +5,8 @@ module {
   cir.global "private" constant cir_private @__const.test.b = #cir.const_array<"qwe" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 100>
   // CHECK: cir.global "private" constant cir_private @__const.test.b = #cir.const_array<"qwe" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 100>
 
-  cir.global "private" constant cir_private dso_local @".str" = #cir.const_array<"qwe" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 4> {alignment = 1 : i64}
-  // CHECK: cir.global "private" constant cir_private dso_local @".str" = #cir.const_array<"qwe" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 4> {alignment = 1 : i64}
+  cir.global "private" constant cir_private dso_local @".str" = #cir.const_array<"qwe" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 4> align(1)
+  // CHECK: cir.global "private" constant cir_private dso_local @".str" = #cir.const_array<"qwe" : !cir.array<!s8i x 3>, trailing_zeros> : !cir.array<!s8i x 4> align(1)
 
   cir.func @test_string_trailing_zeros() {
     %2 = cir.get_global @".str" : !cir.ptr<!cir.array<!s8i x 4>>

diff  --git a/clang/test/CIR/IR/var-registration.cir b/clang/test/CIR/IR/var-registration.cir
index a6edf942701fa..27bef91b8c938 100644
--- a/clang/test/CIR/IR/var-registration.cir
+++ b/clang/test/CIR/IR/var-registration.cir
@@ -3,6 +3,6 @@
 !s32i = !cir.int<s, 32>
 
 module {
-  // CHECK: cir.global {{.*}} @i = #cir.poison : !s32i {{{.*}}, cu.var_registration = #cir.cu.var_registration<i, Variable, extern>}
-  cir.global "private" internal dso_local @i = #cir.poison : !s32i {alignment = 4 : i64, cu.var_registration = #cir.cu.var_registration<i, Variable, extern>}
+  // CHECK: cir.global {{.*}} @i = #cir.poison : !s32i align(4) {cu.var_registration = #cir.cu.var_registration<i, Variable, extern>}
+  cir.global "private" internal dso_local @i = #cir.poison : !s32i align(4) {cu.var_registration = #cir.cu.var_registration<i, Variable, extern>}
 }

diff  --git a/clang/test/CIR/IR/vtable-addrpt.cir b/clang/test/CIR/IR/vtable-addrpt.cir
index 068fbcd0f4017..272a3de389393 100644
--- a/clang/test/CIR/IR/vtable-addrpt.cir
+++ b/clang/test/CIR/IR/vtable-addrpt.cir
@@ -8,7 +8,7 @@
 !rec_S = !cir.struct<"S" {data !cir.vptr}>
 
 module {
-  cir.global "private" external @_ZTV1S : !rec_anon_struct {alignment = 8 : i64}
+  cir.global "private" external @_ZTV1S : !rec_anon_struct align(8)
   cir.func @_ZN1SC2Ev(%arg0: !cir.ptr<!rec_S>) {
     %0 = cir.alloca "this" align(8) init : !cir.ptr<!cir.ptr<!rec_S>>
     cir.store %arg0, %0 : !cir.ptr<!rec_S>, !cir.ptr<!cir.ptr<!rec_S>>

diff  --git a/clang/test/CIR/IR/vtable-attr.cir b/clang/test/CIR/IR/vtable-attr.cir
index 47d01aece8b3d..88fba3d2ac0d6 100644
--- a/clang/test/CIR/IR/vtable-attr.cir
+++ b/clang/test/CIR/IR/vtable-attr.cir
@@ -7,11 +7,11 @@
 !rec_anon_struct = !cir.struct<{data !cir.array<!cir.ptr<!u8i> x 4>}>
 !rec_anon_struct1 = !cir.struct<{data !cir.array<!cir.ptr<!u8i> x 4>, data !cir.array<!cir.ptr<!u8i> x 3>}>
 module {
-  cir.global external @_ZTV1S = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S3keyEv> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S6nonKeyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !rec_anon_struct {alignment = 8 : i64}
-  // CHECK: cir.global external @_ZTV1S = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S3keyEv> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S6nonKeyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !rec_anon_struct {alignment = 8 : i64}
+  cir.global external @_ZTV1S = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S3keyEv> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S6nonKeyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !rec_anon_struct align(8)
+  // CHECK: cir.global external @_ZTV1S = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S3keyEv> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S6nonKeyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>}> : !rec_anon_struct align(8)
 
-  cir.global external @_ZTV2S2 = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S3keyEv> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S6nonKeyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>, #cir.const_array<[#cir.ptr<-8 : i64> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN2S23keyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct1 {alignment = 8 : i64}
-  // CHECK: cir.global external @_ZTV2S2 = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S3keyEv> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S6nonKeyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>, #cir.const_array<[#cir.ptr<-8 : i64> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN2S23keyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct1 {alignment = 8 : i64}
+  cir.global external @_ZTV2S2 = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S3keyEv> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S6nonKeyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>, #cir.const_array<[#cir.ptr<-8 : i64> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN2S23keyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct1 align(8)
+  // CHECK: cir.global external @_ZTV2S2 = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S3keyEv> : !cir.ptr<!u8i>, #cir.global_view<@_ZN1S6nonKeyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 4>, #cir.const_array<[#cir.ptr<-8 : i64> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.global_view<@_ZN2S23keyEv> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct1 align(8)
 
   cir.func private dso_local @_ZN1S3keyEv(%arg0: !cir.ptr<!rec_S>)
   cir.func private dso_local @_ZN1S6nonKeyEv(%arg0: !cir.ptr<!rec_S>)

diff  --git a/clang/test/CIR/IR/vtt-addrpoint.cir b/clang/test/CIR/IR/vtt-addrpoint.cir
index b3da6dcdd561a..34f7663ef494a 100644
--- a/clang/test/CIR/IR/vtt-addrpoint.cir
+++ b/clang/test/CIR/IR/vtt-addrpoint.cir
@@ -32,8 +32,8 @@ module {
     cir.store align(8) %8, %9 : !cir.vptr, !cir.ptr<!cir.vptr>
     cir.return
   }
-  cir.global linkonce_odr dso_local @_ZTV1C = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct {alignment = 8 : i64}
-  cir.global linkonce_odr @_ZTT1C = #cir.const_array<[#cir.global_view<@_ZTV1C, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTC1C0_1B, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 2> {alignment = 8 : i64}
+  cir.global linkonce_odr dso_local @_ZTV1C = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct align(8)
+  cir.global linkonce_odr @_ZTT1C = #cir.const_array<[#cir.global_view<@_ZTV1C, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTC1C0_1B, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 2> align(8)
   cir.func dso_local @_ZN1CC1Ev(%arg0: !cir.ptr<!rec_C>) {
     %0 = cir.alloca "this" align(8) init : !cir.ptr<!cir.ptr<!rec_C>>
     cir.store %arg0, %0 : !cir.ptr<!rec_C>, !cir.ptr<!cir.ptr<!rec_C>>
@@ -51,5 +51,5 @@ module {
     cir.store align(8) %5, %6 : !cir.vptr, !cir.ptr<!cir.vptr>
     cir.return
   }
-  cir.global linkonce_odr dso_local @_ZTC1C0_1B = #cir.const_record<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct {alignment = 8 : i64}
+  cir.global linkonce_odr dso_local @_ZTC1C0_1B = #cir.const_record<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct align(8)
 }

diff  --git a/clang/test/CIR/Lowering/call-llvm-intrinsic.cir b/clang/test/CIR/Lowering/call-llvm-intrinsic.cir
index cbc2c46969798..83893af858bd4 100644
--- a/clang/test/CIR/Lowering/call-llvm-intrinsic.cir
+++ b/clang/test/CIR/Lowering/call-llvm-intrinsic.cir
@@ -1,4 +1,5 @@
 // RUN: cir-opt %s -cir-to-llvm -o - | FileCheck %s
+// RUN: cir-opt %s --verify-roundtrip -o /dev/null
 
 // Contract test for CIRToLLVMLLVMIntrinsicCallOpLowering: the op def
 // declares Optional<CIR_AnyType>:$result, so the lowering must accept
@@ -32,7 +33,7 @@ module {
   // CHECK:         llvm.call_intrinsic "llvm.vector.reduce.fadd"(%{{.*}}, %{{.*}}) {fastmathFlags = #llvm.fastmath<reassoc>} : (f32, vector<4xf32>) -> f32
   // CHECK:         llvm.return
   cir.func @fastmath_flags(%arg0: !f32, %arg1: !v4f32) -> !f32 {
-    %0 = cir.call_llvm_intrinsic "vector.reduce.fadd" %arg0, %arg1 : (!f32, !v4f32) -> !f32 {fastmath_flags = #cir.fastmath<reassoc>}
+    %0 = cir.call_llvm_intrinsic "vector.reduce.fadd" %arg0, %arg1 : (!f32, !v4f32) -> !f32 fastmath<reassoc>
     cir.return %0 : !f32
   }
 
@@ -40,7 +41,7 @@ module {
   // CHECK:         llvm.call_intrinsic "llvm.vector.reduce.fadd"(%{{.*}}, %{{.*}}) {fastmathFlags = #llvm.fastmath<fast>} : (f32, vector<4xf32>) -> f32
   // CHECK:         llvm.return
   cir.func @fastmath_fast_group(%arg0: !f32, %arg1: !v4f32) -> !f32 {
-    %0 = cir.call_llvm_intrinsic "vector.reduce.fadd" %arg0, %arg1 : (!f32, !v4f32) -> !f32 {fastmath_flags = #cir.fastmath<fast>}
+    %0 = cir.call_llvm_intrinsic "vector.reduce.fadd" %arg0, %arg1 : (!f32, !v4f32) -> !f32 fastmath<fast>
     cir.return %0 : !f32
   }
 }

diff  --git a/clang/test/CIR/Lowering/fenv.cir b/clang/test/CIR/Lowering/fenv.cir
index 415cf19ce9542..d7ce72eadebc6 100644
--- a/clang/test/CIR/Lowering/fenv.cir
+++ b/clang/test/CIR/Lowering/fenv.cir
@@ -9,7 +9,7 @@ module {
     // CHECK: %[[RM:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"round.tonearest">
     // CHECK: %[[EB:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.strict">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"(%{{.*}}, %{{.*}}, %[[RM]], %[[EB]]) : (f32, f32, !llvm.metadata, !llvm.metadata) -> f32
-    %0 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>}
+    %0 = cir.fadd %a, %b : !cir.float fenv<dynamic_rounding_mode = tonearest, except_mode = unknown, strict_except = true>
 
     // CHECK: llvm.fadd %{{.*}}, %{{.*}} : f32
     %1 = cir.fadd %a, %b : !cir.float
@@ -17,7 +17,7 @@ module {
     // CHECK: %[[RM2:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"round.tonearest">
     // CHECK: %[[EB2:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.ignore">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"(%{{.*}}, %{{.*}}, %[[RM2]], %[[EB2]]) : (f32, f32, !llvm.metadata, !llvm.metadata) -> f32
-    %2 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<>}
+    %2 = cir.fadd %a, %b : !cir.float fenv<>
     cir.return
   }
 
@@ -25,22 +25,22 @@ module {
   cir.func @rounding_modes(%a: !cir.float, %b: !cir.float) {
     // CHECK: llvm.mlir.metadata_as_value #llvm.md_string<"round.tonearest">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"
-    %0 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest>}
+    %0 = cir.fadd %a, %b : !cir.float fenv<dynamic_rounding_mode = tonearest>
     // CHECK: llvm.mlir.metadata_as_value #llvm.md_string<"round.downward">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"
-    %1 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = downward>}
+    %1 = cir.fadd %a, %b : !cir.float fenv<dynamic_rounding_mode = downward>
     // CHECK: llvm.mlir.metadata_as_value #llvm.md_string<"round.upward">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"
-    %2 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upward>}
+    %2 = cir.fadd %a, %b : !cir.float fenv<dynamic_rounding_mode = upward>
     // CHECK: llvm.mlir.metadata_as_value #llvm.md_string<"round.towardzero">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"
-    %3 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = upwardzero>}
+    %3 = cir.fadd %a, %b : !cir.float fenv<dynamic_rounding_mode = upwardzero>
     // CHECK: llvm.mlir.metadata_as_value #llvm.md_string<"round.tonearestaway">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"
-    %4 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearestaway>}
+    %4 = cir.fadd %a, %b : !cir.float fenv<dynamic_rounding_mode = tonearestaway>
     // CHECK: llvm.mlir.metadata_as_value #llvm.md_string<"round.dynamic">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"
-    %5 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = unknown>}
+    %5 = cir.fadd %a, %b : !cir.float fenv<dynamic_rounding_mode = unknown>
     cir.return
   }
 
@@ -48,31 +48,31 @@ module {
   cir.func @exception_behaviors(%a: !cir.float, %b: !cir.float) {
     // CHECK: llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.strict">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"
-    %0 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<strict_except = true>}
+    %0 = cir.fadd %a, %b : !cir.float fenv<strict_except = true>
     // CHECK: llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.maytrap">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"
-    %1 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<strict_except = false>}
+    %1 = cir.fadd %a, %b : !cir.float fenv<strict_except = false>
     // CHECK: llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.ignore">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"
-    %2 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<except_mode = masked, strict_except = false>}
+    %2 = cir.fadd %a, %b : !cir.float fenv<except_mode = masked, strict_except = false>
     // CHECK: llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.ignore">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"
-    %3 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<dynamic_rounding_mode = tonearest>}
+    %3 = cir.fadd %a, %b : !cir.float fenv<dynamic_rounding_mode = tonearest>
     cir.return
   }
 
   // CHECK-LABEL: llvm.func @all_binops
   cir.func @all_binops(%a: !cir.double, %b: !cir.double) {
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, !llvm.metadata, !llvm.metadata) -> f64
-    %0 = cir.fadd %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %0 = cir.fadd %a, %b : !cir.double fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fsub"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, !llvm.metadata, !llvm.metadata) -> f64
-    %1 = cir.fsub %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %1 = cir.fsub %a, %b : !cir.double fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fmul"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, !llvm.metadata, !llvm.metadata) -> f64
-    %2 = cir.fmul %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %2 = cir.fmul %a, %b : !cir.double fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fdiv"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, !llvm.metadata, !llvm.metadata) -> f64
-    %3 = cir.fdiv %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %3 = cir.fdiv %a, %b : !cir.double fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.frem"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, !llvm.metadata, !llvm.metadata) -> f64
-    %4 = cir.frem %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %4 = cir.frem %a, %b : !cir.double fenv<strict_except = true>
     cir.return
   }
 
@@ -80,21 +80,21 @@ module {
   cir.func @vector_binop(%a: !cir.vector<4 x !cir.float>,
                          %b: !cir.vector<4 x !cir.float>) {
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fadd"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (vector<4xf32>, vector<4xf32>, !llvm.metadata, !llvm.metadata) -> vector<4xf32>
-    %0 = cir.fadd %a, %b : !cir.vector<4 x !cir.float> {fenv = #cir.fenv<strict_except = true>}
+    %0 = cir.fadd %a, %b : !cir.vector<4 x !cir.float> fenv<strict_except = true>
     cir.return
   }
 
   // CHECK-LABEL: llvm.func @unary_fp_builtins
   cir.func @unary_fp_builtins(%a: !cir.double) {
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.cos"(%{{.*}}, %{{.*}}, %{{.*}}) : (f64, !llvm.metadata, !llvm.metadata) -> f64
-    %0 = cir.cos %a : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %0 = cir.cos %a : !cir.double fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.sqrt"(%{{.*}}, %{{.*}}, %{{.*}}) : (f64, !llvm.metadata, !llvm.metadata) -> f64
-    %1 = cir.sqrt %a : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %1 = cir.sqrt %a : !cir.double fenv<strict_except = true>
     // CHECK: %[[EB:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.strict">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.ceil"(%{{.*}}, %[[EB]]) : (f64, !llvm.metadata) -> f64
-    %2 = cir.ceil %a : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %2 = cir.ceil %a : !cir.double fenv<strict_except = true>
     // CHECK: llvm.intr.fabs(%{{.*}}) : (f64) -> f64
-    %3 = cir.fabs %a : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %3 = cir.fabs %a : !cir.double fenv<strict_except = true>
     // CHECK: llvm.intr.cos(%{{.*}}) : (f64) -> f64
     %4 = cir.cos %a : !cir.double
     cir.return
@@ -103,17 +103,17 @@ module {
   // CHECK-LABEL: llvm.func @binary_fp_builtins
   cir.func @binary_fp_builtins(%a: !cir.double, %b: !cir.double) {
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.pow"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, !llvm.metadata, !llvm.metadata) -> f64
-    %0 = cir.pow %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %0 = cir.pow %a, %b : !cir.double fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.atan2"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, !llvm.metadata, !llvm.metadata) -> f64
-    %1 = cir.atan2 %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %1 = cir.atan2 %a, %b : !cir.double fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.frem"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, !llvm.metadata, !llvm.metadata) -> f64
-    %2 = cir.fmod %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %2 = cir.fmod %a, %b : !cir.double fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.maximum"(%{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, !llvm.metadata) -> f64
-    %3 = cir.fmaximum %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %3 = cir.fmaximum %a, %b : !cir.double fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.minimum"(%{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, !llvm.metadata) -> f64
-    %4 = cir.fminimum %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %4 = cir.fminimum %a, %b : !cir.double fenv<strict_except = true>
     // CHECK: llvm.intr.copysign(%{{.*}}, %{{.*}}) : (f64, f64) -> f64
-    %5 = cir.copysign %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %5 = cir.copysign %a, %b : !cir.double fenv<strict_except = true>
     cir.return
   }
 
@@ -121,11 +121,11 @@ module {
   cir.func @ternary_fp_builtins(%a: !cir.double, %b: !cir.double,
                                 %c: !cir.double) {
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fma"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, f64, !llvm.metadata, !llvm.metadata) -> f64
-    %0 = cir.fma %a, %b, %c : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %0 = cir.fma %a, %b, %c : !cir.double fenv<strict_except = true>
     // CHECK: llvm.intr.fma(%{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, f64) -> f64
     %1 = cir.fma %a, %b, %c : !cir.double
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fmuladd"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, f64, !llvm.metadata, !llvm.metadata) -> f64
-    %2 = cir.fmuladd %a, %b, %c : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %2 = cir.fmuladd %a, %b, %c : !cir.double fenv<strict_except = true>
     // CHECK: llvm.intr.fmuladd(%{{.*}}, %{{.*}}, %{{.*}}) : (f64, f64, f64) -> f64
     %3 = cir.fmuladd %a, %b, %c : !cir.double
     cir.return
@@ -136,11 +136,11 @@ module {
                                     %b: !cir.vector<4 x !cir.float>,
                                     %c: !cir.vector<4 x !cir.float>) {
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fma"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (vector<4xf32>, vector<4xf32>, vector<4xf32>, !llvm.metadata, !llvm.metadata) -> vector<4xf32>
-    %0 = cir.fma %a, %b, %c : !cir.vector<4 x !cir.float> {fenv = #cir.fenv<strict_except = true>}
+    %0 = cir.fma %a, %b, %c : !cir.vector<4 x !cir.float> fenv<strict_except = true>
     // CHECK: llvm.intr.fma(%{{.*}}, %{{.*}}, %{{.*}}) : (vector<4xf32>, vector<4xf32>, vector<4xf32>) -> vector<4xf32>
     %1 = cir.fma %a, %b, %c : !cir.vector<4 x !cir.float>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fmuladd"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (vector<4xf32>, vector<4xf32>, vector<4xf32>, !llvm.metadata, !llvm.metadata) -> vector<4xf32>
-    %2 = cir.fmuladd %a, %b, %c : !cir.vector<4 x !cir.float> {fenv = #cir.fenv<strict_except = true>}
+    %2 = cir.fmuladd %a, %b, %c : !cir.vector<4 x !cir.float> fenv<strict_except = true>
     // CHECK: llvm.intr.fmuladd(%{{.*}}, %{{.*}}, %{{.*}}) : (vector<4xf32>, vector<4xf32>, vector<4xf32>) -> vector<4xf32>
     %3 = cir.fmuladd %a, %b, %c : !cir.vector<4 x !cir.float>
     cir.return
@@ -149,9 +149,9 @@ module {
   // CHECK-LABEL: llvm.func @minmax_num
   cir.func @minmax_num(%a: !cir.double, %b: !cir.double) {
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.maxnum"(%{{.*}}, %{{.*}}, %{{.*}}) {fastmathFlags = #llvm.fastmath<nsz>} : (f64, f64, !llvm.metadata) -> f64
-    %0 = cir.fmaxnum %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %0 = cir.fmaxnum %a, %b : !cir.double fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.minnum"(%{{.*}}, %{{.*}}, %{{.*}}) {fastmathFlags = #llvm.fastmath<nsz>} : (f64, f64, !llvm.metadata) -> f64
-    %1 = cir.fminnum %a, %b : !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %1 = cir.fminnum %a, %b : !cir.double fenv<strict_except = true>
     // CHECK: llvm.intr.maxnum(%{{.*}}, %{{.*}}) fastmath<nsz> : (f64, f64) -> f64
     %2 = cir.fmaxnum %a, %b : !cir.double
     // CHECK: llvm.intr.minnum(%{{.*}}, %{{.*}}) fastmath<nsz> : (f64, f64) -> f64
@@ -164,14 +164,14 @@ module {
     // CHECK: %[[RM:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"round.tonearest">
     // CHECK: %[[EB:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.strict">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fptrunc"(%{{.*}}, %[[RM]], %[[EB]]) : (f64, !llvm.metadata, !llvm.metadata) -> f32
-    %0 = cir.cast floating %b : !cir.double -> !cir.float {fenv = #cir.fenv<strict_except = true>}
+    %0 = cir.cast floating %b : !cir.double -> !cir.float fenv<strict_except = true>
     // CHECK: %[[EB2:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.strict">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fpext"(%{{.*}}, %[[EB2]]) : (f32, !llvm.metadata) -> f64
-    %1 = cir.cast floating %a : !cir.float -> !cir.double {fenv = #cir.fenv<strict_except = true>}
+    %1 = cir.cast floating %a : !cir.float -> !cir.double fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.sitofp"(%{{.*}}, %{{.*}}, %{{.*}}) : (i32, !llvm.metadata, !llvm.metadata) -> f32
-    %2 = cir.cast int_to_float %i : !s32i -> !cir.float {fenv = #cir.fenv<strict_except = true>}
+    %2 = cir.cast int_to_float %i : !s32i -> !cir.float fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fptosi"(%{{.*}}, %{{.*}}) : (f32, !llvm.metadata) -> i32
-    %3 = cir.cast float_to_int %a : !cir.float -> !s32i {fenv = #cir.fenv<strict_except = true>}
+    %3 = cir.cast float_to_int %a : !cir.float -> !s32i fenv<strict_except = true>
     // Without fenv the plain LLVM cast ops are used.
     // CHECK: llvm.fptrunc %{{.*}} : f64 to f32
     %4 = cir.cast floating %b : !cir.double -> !cir.float
@@ -185,28 +185,28 @@ module {
     // CHECK: %[[PRED:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"olt">
     // CHECK: %[[EB:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.strict">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fcmps"(%{{.*}}, %{{.*}}, %[[PRED]], %[[EB]]) : (f32, f32, !llvm.metadata, !llvm.metadata) -> i1
-    %0 = cir.cmp lt %a, %b : !cir.float {fenv = #cir.fenv<strict_except = true>}
+    %0 = cir.cmp lt %a, %b : !cir.float fenv<strict_except = true>
     // CHECK: %[[PRED_LE:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"ole">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fcmps"(%{{.*}}, %{{.*}}, %[[PRED_LE]], %{{.*}}) : (f32, f32, !llvm.metadata, !llvm.metadata) -> i1
-    %1 = cir.cmp le %a, %b : !cir.float {fenv = #cir.fenv<strict_except = true>}
+    %1 = cir.cmp le %a, %b : !cir.float fenv<strict_except = true>
     // CHECK: %[[PRED_GT:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"ogt">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fcmps"(%{{.*}}, %{{.*}}, %[[PRED_GT]], %{{.*}}) : (f32, f32, !llvm.metadata, !llvm.metadata) -> i1
-    %2 = cir.cmp gt %a, %b : !cir.float {fenv = #cir.fenv<strict_except = true>}
+    %2 = cir.cmp gt %a, %b : !cir.float fenv<strict_except = true>
     // CHECK: %[[PRED_GE:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"oge">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fcmps"(%{{.*}}, %{{.*}}, %[[PRED_GE]], %{{.*}}) : (f32, f32, !llvm.metadata, !llvm.metadata) -> i1
-    %3 = cir.cmp ge %a, %b : !cir.float {fenv = #cir.fenv<strict_except = true>}
+    %3 = cir.cmp ge %a, %b : !cir.float fenv<strict_except = true>
     // CHECK: %[[PRED_EQ:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"oeq">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fcmp"(%{{.*}}, %{{.*}}, %[[PRED_EQ]], %{{.*}}) : (f32, f32, !llvm.metadata, !llvm.metadata) -> i1
-    %4 = cir.cmp eq %a, %b : !cir.float {fenv = #cir.fenv<strict_except = true>}
+    %4 = cir.cmp eq %a, %b : !cir.float fenv<strict_except = true>
     // CHECK: %[[PRED_NE:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"une">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fcmp"(%{{.*}}, %{{.*}}, %[[PRED_NE]], %{{.*}}) : (f32, f32, !llvm.metadata, !llvm.metadata) -> i1
-    %5 = cir.cmp ne %a, %b : !cir.float {fenv = #cir.fenv<strict_except = true>}
+    %5 = cir.cmp ne %a, %b : !cir.float fenv<strict_except = true>
     // CHECK: %[[PRED_ONE:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"one">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fcmp"(%{{.*}}, %{{.*}}, %[[PRED_ONE]], %{{.*}}) : (f32, f32, !llvm.metadata, !llvm.metadata) -> i1
-    %6 = cir.cmp one %a, %b : !cir.float {fenv = #cir.fenv<strict_except = true>}
+    %6 = cir.cmp one %a, %b : !cir.float fenv<strict_except = true>
     // CHECK: %[[PRED_UNO:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"uno">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.fcmp"(%{{.*}}, %{{.*}}, %[[PRED_UNO]], %{{.*}}) : (f32, f32, !llvm.metadata, !llvm.metadata) -> i1
-    %7 = cir.cmp uno %a, %b : !cir.float {fenv = #cir.fenv<strict_except = true>}
+    %7 = cir.cmp uno %a, %b : !cir.float fenv<strict_except = true>
     // CHECK: llvm.fcmp "olt" %{{.*}}, %{{.*}} : f32
     %8 = cir.cmp lt %a, %b : !cir.float
     cir.return
@@ -219,15 +219,13 @@ module {
     // CHECK: %[[EB:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.strict">
     // CHECK: %[[CMP:.*]] = llvm.call_intrinsic "llvm.experimental.constrained.fcmps"(%{{.*}}, %{{.*}}, %[[PRED]], %[[EB]]) : (vector<4xf32>, vector<4xf32>, !llvm.metadata, !llvm.metadata) -> vector<4xi1>
     // CHECK: llvm.sext %[[CMP]] : vector<4xi1> to vector<4xi32>
-    %0 = cir.vec.cmp(gt, %a, %b) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> {
-      fenv = #cir.fenv<strict_except = true>
-    }
+    %0 = cir.vec.cmp(gt, %a, %b) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i>
+         fenv<strict_except = true>
     // CHECK: %[[PRED_EQ:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"oeq">
     // CHECK: %[[CMP_EQ:.*]] = llvm.call_intrinsic "llvm.experimental.constrained.fcmp"(%{{.*}}, %{{.*}}, %[[PRED_EQ]], %{{.*}}) : (vector<4xf32>, vector<4xf32>, !llvm.metadata, !llvm.metadata) -> vector<4xi1>
     // CHECK: llvm.sext %[[CMP_EQ]] : vector<4xi1> to vector<4xi32>
-    %1 = cir.vec.cmp(eq, %a, %b) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> {
-      fenv = #cir.fenv<strict_except = true>
-    }
+    %1 = cir.vec.cmp(eq, %a, %b) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i>
+         fenv<strict_except = true>
     // CHECK: llvm.fcmp "olt" %{{.*}}, %{{.*}} : vector<4xf32>
     // CHECK: llvm.sext %{{.*}} : vector<4xi1> to vector<4xi32>
     %2 = cir.vec.cmp(lt, %a, %b) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i>
@@ -238,15 +236,15 @@ module {
   cir.func @unary_fp_to_int_builtins(%a: !cir.double) {
     // CHECK: %[[EB:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.strict">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.lround"(%{{.*}}, %[[EB]]) : (f64, !llvm.metadata) -> i64
-    %0 = cir.lround %a : !cir.double -> !s64i {fenv = #cir.fenv<strict_except = true>}
+    %0 = cir.lround %a : !cir.double -> !s64i fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.llround"(%{{.*}}, %{{.*}}) : (f64, !llvm.metadata) -> i64
-    %1 = cir.llround %a : !cir.double -> !s64i {fenv = #cir.fenv<strict_except = true>}
+    %1 = cir.llround %a : !cir.double -> !s64i fenv<strict_except = true>
     // CHECK: %[[RM:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"round.tonearest">
     // CHECK: %[[EB2:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.strict">
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.lrint"(%{{.*}}, %[[RM]], %[[EB2]]) : (f64, !llvm.metadata, !llvm.metadata) -> i64
-    %2 = cir.lrint %a : !cir.double -> !s64i {fenv = #cir.fenv<strict_except = true>}
+    %2 = cir.lrint %a : !cir.double -> !s64i fenv<strict_except = true>
     // CHECK: llvm.call_intrinsic "llvm.experimental.constrained.llrint"(%{{.*}}, %{{.*}}, %{{.*}}) : (f64, !llvm.metadata, !llvm.metadata) -> i64
-    %3 = cir.llrint %a : !cir.double -> !s64i {fenv = #cir.fenv<strict_except = true>}
+    %3 = cir.llrint %a : !cir.double -> !s64i fenv<strict_except = true>
     // CHECK: llvm.intr.lround(%{{.*}}) : (f64) -> i64
     %4 = cir.lround %a : !cir.double -> !s64i
     cir.return

diff  --git a/clang/test/CIR/Lowering/vtt-addrpoint.cir b/clang/test/CIR/Lowering/vtt-addrpoint.cir
index 6fa8015cc3c22..37bfe5ec38151 100644
--- a/clang/test/CIR/Lowering/vtt-addrpoint.cir
+++ b/clang/test/CIR/Lowering/vtt-addrpoint.cir
@@ -35,8 +35,8 @@ module {
 // CHECK:   %[[VTT:.*]] = getelementptr inbounds ptr, ptr %{{.*}}, i32 1
 // CHECK:   call void @_ZN1BC2Ev(ptr %{{.*}}, ptr %[[VTT]])
 
-  cir.global linkonce_odr dso_local @_ZTV1C = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct {alignment = 8 : i64}
-  cir.global linkonce_odr @_ZTT1C = #cir.const_array<[#cir.global_view<@_ZTV1C, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTC1C0_1B, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 2> {alignment = 8 : i64}
+  cir.global linkonce_odr dso_local @_ZTV1C = #cir.vtable<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct align(8)
+  cir.global linkonce_odr @_ZTT1C = #cir.const_array<[#cir.global_view<@_ZTV1C, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>, #cir.global_view<@_ZTC1C0_1B, [0 : i32, 3 : i32]> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 2> align(8)
   cir.func dso_local @_ZN1CC1Ev(%arg0: !cir.ptr<!rec_C>) {
     %0 = cir.alloca "this" align(8) init : !cir.ptr<!cir.ptr<!rec_C>>
     cir.store %arg0, %0 : !cir.ptr<!rec_C>, !cir.ptr<!cir.ptr<!rec_C>>
@@ -55,5 +55,5 @@ module {
 // CHECK: define{{.*}} void @_ZN1CC1Ev
 // CHECK:   store ptr getelementptr inbounds nuw (i8, ptr @_ZTV1C, i64 24), ptr %{{.*}}
 
-  cir.global linkonce_odr dso_local @_ZTC1C0_1B = #cir.const_record<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct {alignment = 8 : i64}
+  cir.global linkonce_odr dso_local @_ZTC1C0_1B = #cir.const_record<{#cir.const_array<[#cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>, #cir.ptr<null> : !cir.ptr<!u8i>]> : !cir.array<!cir.ptr<!u8i> x 3>}> : !rec_anon_struct align(8)
 }

diff  --git a/clang/test/CIR/Transforms/vector-cmp-fold.cir b/clang/test/CIR/Transforms/vector-cmp-fold.cir
index 4b130a3671a44..0d18af84ec145 100644
--- a/clang/test/CIR/Transforms/vector-cmp-fold.cir
+++ b/clang/test/CIR/Transforms/vector-cmp-fold.cir
@@ -312,14 +312,13 @@ module  {
       #cir.fp<8.000000e+00> : !cir.float
     ]> : !cir.vector<4 x !cir.float>
     %new_vec = cir.vec.cmp(lt, %vec_1, %vec_2) :
-        !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> {
-      fenv = #cir.fenv<strict_except = true>
-    }
+        !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i>
+        fenv<strict_except = true>
     cir.return %new_vec : !cir.vector<4 x !s32i>
   }
 
   // CHECK-LABEL: cir.func{{.*}} @no_fold_cmp_vector_with_fenv
   // CHECK: cir.vec.cmp(lt, %{{.*}}, %{{.*}}) :
   // CHECK-SAME: !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i>
-  // CHECK-SAME: {fenv = #cir.fenv<strict_except = true>}
+  // CHECK-SAME: fenv<strict_except = true>
 }

diff  --git a/clang/unittests/CIR/FenvOpTest.cpp b/clang/unittests/CIR/FenvOpTest.cpp
index 9e989ed1ff8a5..b0ff67b916701 100644
--- a/clang/unittests/CIR/FenvOpTest.cpp
+++ b/clang/unittests/CIR/FenvOpTest.cpp
@@ -68,21 +68,19 @@ TEST_F(CIRFenvOpTest, MemoryEffects) {
                 %va: !cir.vector<4 x !cir.float>,
                 %vb: !cir.vector<4 x !cir.float>) {
       %0 = cir.fadd %a, %b : !cir.float
-      %1 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<>}
-      %2 = cir.sqrt %a : !cir.float {fenv = #cir.fenv<>}
-      %3 = cir.pow %a, %b : !cir.float {fenv = #cir.fenv<>}
+      %1 = cir.fadd %a, %b : !cir.float fenv<>
+      %2 = cir.sqrt %a : !cir.float fenv<>
+      %3 = cir.pow %a, %b : !cir.float fenv<>
       %4 = cir.fma %a, %b, %c : !cir.float
-      %5 = cir.fma %a, %b, %c : !cir.float {fenv = #cir.fenv<>}
+      %5 = cir.fma %a, %b, %c : !cir.float fenv<>
       %6 = cir.lround %a : !cir.float -> !s32i
-      %7 = cir.lround %a : !cir.float -> !s32i {fenv = #cir.fenv<>}
+      %7 = cir.lround %a : !cir.float -> !s32i fenv<>
       %8 = cir.cast floating %a : !cir.float -> !cir.double
-      %9 = cir.cast floating %a : !cir.float -> !cir.double {fenv = #cir.fenv<>}
+      %9 = cir.cast floating %a : !cir.float -> !cir.double fenv<>
       %10 = cir.cmp lt %a, %b : !cir.float
-      %11 = cir.cmp lt %a, %b : !cir.float {fenv = #cir.fenv<>}
+      %11 = cir.cmp lt %a, %b : !cir.float fenv<>
       %12 = cir.vec.cmp(eq, %va, %vb) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i>
-      %13 = cir.vec.cmp(eq, %va, %vb) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> {
-        fenv = #cir.fenv<>
-      }
+      %13 = cir.vec.cmp(eq, %va, %vb) : !cir.vector<4 x !cir.float>, !cir.vector<4 x !s32i> fenv<>
       cir.return
     }
   )CIR");
@@ -143,22 +141,12 @@ TEST_F(CIRFenvOpTest, Speculatability) {
   OwningOpRef<ModuleOp> module = parse(R"CIR(
     cir.func @f(%a: !cir.float, %b: !cir.float) {
       %0 = cir.fadd %a, %b : !cir.float
-      %1 = cir.fadd %a, %b : !cir.float {fenv = #cir.fenv<>}
-      %2 = cir.fadd %a, %b : !cir.float {
-        fenv = #cir.fenv<except_mode = masked>
-      }
-      %3 = cir.fadd %a, %b : !cir.float {
-        fenv = #cir.fenv<strict_except = false>
-      }
-      %4 = cir.fadd %a, %b : !cir.float {
-        fenv = #cir.fenv<except_mode = masked, strict_except = true>
-      }
-      %5 = cir.fadd %a, %b : !cir.float {
-        fenv = #cir.fenv<except_mode = unmasked, strict_except = false>
-      }
-      %6 = cir.fadd %a, %b : !cir.float {
-        fenv = #cir.fenv<except_mode = unknown, strict_except = false>
-      }
+      %1 = cir.fadd %a, %b : !cir.float fenv<>
+      %2 = cir.fadd %a, %b : !cir.float fenv<except_mode = masked>
+      %3 = cir.fadd %a, %b : !cir.float fenv<strict_except = false>
+      %4 = cir.fadd %a, %b : !cir.float fenv<except_mode = masked, strict_except = true>
+      %5 = cir.fadd %a, %b : !cir.float fenv<except_mode = unmasked, strict_except = false>
+      %6 = cir.fadd %a, %b : !cir.float fenv<except_mode = unknown, strict_except = false>
       cir.return
     }
   )CIR");


        


More information about the cfe-commits mailing list