[clang] Make CIR assembly formats strict properties compatible (PR #226600)
Mehdi Amini via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 28 02:42:41 PDT 2026
https://github.com/joker-eph updated https://github.com/llvm/llvm-project/pull/226600
>From efb750cc5006b51fe5013eba015d70d23053e7c2 Mon Sep 17 00:00:00 2001
From: Mehdi Amini <joker.eph at gmail.com>
Date: Fri, 25 Sep 2026 15:30:18 -0700
Subject: [PATCH] Make CIR assembly formats strict properties compatible
Bind inherent attributes explicitly in CIR operation formats. Print fenv
and static_local_info using their attribute assembly formats, preserving
compact syntax without duplicate field parsers and printers. Update tests.
Assisted-by: Codex
---
.../include/clang/CIR/Dialect/IR/CIRAttrs.td | 4 +-
.../clang/CIR/Dialect/IR/CIRDialect.td | 2 +-
clang/include/clang/CIR/Dialect/IR/CIROps.td | 67 +-
clang/lib/CIR/CodeGen/CIRGenExprCXX.cpp | 9 +-
.../CIR/Dialect/Transforms/CXXABILowering.cpp | 5 +-
.../CIR/Analysis/alias-analysis-modref.cir | 2 +-
.../alias-analysis-underlying-object.cir | 44 +-
clang/test/CIR/CodeGen/alignment.c | 6 +-
clang/test/CIR/CodeGen/atomic.c | 12 +-
clang/test/CIR/CodeGen/bitint-memory.c | 20 +-
clang/test/CIR/CodeGen/bitint-record-layout.c | 32 +-
clang/test/CIR/CodeGen/bitint-wide-be.c | 16 +-
clang/test/CIR/CodeGen/bitint-wide.c | 14 +-
clang/test/CIR/CodeGen/bitint.c | 4 +-
clang/test/CIR/CodeGen/builtin-call.cpp | 3 +-
clang/test/CIR/CodeGen/compound_literal.c | 42 +-
.../test/CIR/CodeGen/delete-array-aligned.cpp | 10 +-
.../delete-array-overaligned-cookie.cpp | 4 +-
.../CodeGen/delete-array-throwing-dtor.cpp | 2 +-
.../CIR/CodeGen/delete-array-unsized-dtor.cpp | 7 +-
clang/test/CIR/CodeGen/delete-array.cpp | 14 +-
clang/test/CIR/CodeGen/empty-union.cpp | 2 +-
clang/test/CIR/CodeGen/fixed-point-literal.c | 12 +-
clang/test/CIR/CodeGen/fp-contract.c | 4 +-
.../CIR/CodeGen/global-const-alignment.cpp | 4 +-
clang/test/CIR/CodeGen/global-init-fenv.cpp | 16 +-
clang/test/CIR/CodeGen/global-section.c | 6 +-
.../test/CIR/CodeGen/global-tls-dyn-init.cpp | 2 +-
clang/test/CIR/CodeGen/globals.cpp | 2 +-
clang/test/CIR/CodeGen/lambda.cpp | 2 +-
.../local-const-aggregate-name-clash.cpp | 4 +-
clang/test/CIR/CodeGen/no-odr-use.cpp | 4 +-
.../test/CIR/CodeGen/non-odr-use-non-ref.cpp | 2 +-
clang/test/CIR/CodeGen/nonzeroinit-struct.cpp | 14 +-
.../test/CIR/CodeGen/paren-list-agg-init.cpp | 16 +-
.../pointer-to-data-member-indirect-field.cpp | 4 +-
.../test/CIR/CodeGen/pointer-width-32bit.cpp | 6 +-
clang/test/CIR/CodeGen/pragma-fenv_access.c | 734 +++++++++---------
clang/test/CIR/CodeGen/predefined-expr.c | 2 +-
clang/test/CIR/CodeGen/source-loc.cpp | 2 +-
.../test/CIR/CodeGen/static-local-in-ctor.cpp | 4 +-
clang/test/CIR/CodeGen/static-local-info.cpp | 8 +-
clang/test/CIR/CodeGen/tls-model.cpp | 64 +-
clang/test/CIR/CodeGen/union-agg-init.c | 4 +-
clang/test/CIR/CodeGen/vbase.cpp | 2 +-
clang/test/CIR/CodeGen/vector-strict-fp.cpp | 10 +-
clang/test/CIR/CodeGen/vtt.cpp | 4 +-
clang/test/CIR/CodeGenCUDA/address-spaces.cu | 10 +-
clang/test/CIR/CodeGenCUDA/device-stub.cu | 10 +-
clang/test/CIR/CodeGenCUDA/kernel-call.cu | 2 +-
clang/test/CIR/CodeGenCXX/global-refs.cpp | 36 +-
.../CIR/CodeGenCXX/init-priority-attr.cpp | 10 +-
clang/test/CIR/CodeGenCXX/vtable-linkage.cpp | 76 +-
clang/test/CIR/CodeGenCXX/zero_init_bases.cpp | 6 +-
clang/test/CIR/IR/attribute-visibility.cir | 16 +-
clang/test/CIR/IR/fenv.cir | 103 ++-
clang/test/CIR/IR/global.cir | 2 +
clang/test/CIR/IR/invalid-cast.cir | 10 +-
clang/test/CIR/IR/invalid-cmp.cir | 8 +-
clang/test/CIR/IR/invalid-delete-array.cir | 4 +-
.../test/CIR/IR/invalid-static-local-info.cir | 2 +-
clang/test/CIR/IR/invalid-static-local.cir | 6 +-
clang/test/CIR/IR/invalid-tls.cir | 2 +-
clang/test/CIR/IR/invalid-vtable.cir | 14 +-
clang/test/CIR/IR/static-local-info.cir | 12 +-
clang/test/CIR/IR/static-local.cir | 10 +-
clang/test/CIR/IR/string-trailing-zeros.cir | 4 +-
clang/test/CIR/IR/var-registration.cir | 4 +-
clang/test/CIR/IR/vtable-addrpt.cir | 2 +-
clang/test/CIR/IR/vtable-attr.cir | 8 +-
clang/test/CIR/IR/vtt-addrpoint.cir | 6 +-
.../test/CIR/Lowering/call-llvm-intrinsic.cir | 5 +-
clang/test/CIR/Lowering/fenv.cir | 110 ++-
clang/test/CIR/Lowering/vtt-addrpoint.cir | 6 +-
clang/test/CIR/Transforms/vector-cmp-fold.cir | 7 +-
clang/unittests/CIR/FenvOpTest.cpp | 40 +-
76 files changed, 897 insertions(+), 887 deletions(-)
diff --git a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
index 04dc8bb178cb87..358412b75fc05c 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 aee862afc02b43..49ce1cb0871c94 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 4996037ea5f560..de805d4c642a27 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 57c61c2f47ed24..f8c2a5cce47e40 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 5062b4f231fbb6..9a0e40bd4f5068 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 d02a6f06bfc3e2..781d3bd3baa60f 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 3f45ee74c59dc6..017ae426a7a22e 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 25acb6a0f570d9..c4f25315f441a6 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 28fe01e83ed657..d2fb28116e7bd4 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 ba71546e611608..c7db7911840378 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 41c5f4b8ee8db2..a9a9b7a21b55be 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 829ff07ad7330d..40acbccccdf54a 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 difference.
// 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 d0402b5dabc2d5..ac96abc4c92742 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 difference.
// 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 edd7b91cae49ab..558b68f2a6b2c9 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 2b486d10dc65a3..5d84d0e762223b 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 7d38e5b2cd6d05..688affe9281272 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 a02476de7da04a..493c6487341a99 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 e9c4a329ac5a18..5e676045fbda3a 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 d5a63bc65edc84..998b14c13eeb51 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 c1216b87c589e4..835ef405ebc0fb 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 210cfd383824f1..d97d59977dbc29 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 a608eefbc77aa9..a297cf3a34a033 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 9fc8f7398e17fc..3188ac888cadf0 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 3abe498a0cfb73..22f9ed38140246 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 032db170b0794d..06e9b6be8ccf9f 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 16b1c6e3195f7e..80f09793cb50ef 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 45caf52b6f81c3..66b384650978c0 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 fe6288f3312277..4c23dedee6d38b 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 be6816a7e046ca..44e80fa7d2a6d9 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 fc5d7c182308d9..8bba0c82969eb8 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 f0475ee765d856..099af0c366b1ac 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 7c786c258edf21..f325a96a3576fa 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 8777634debca32..1d2166f4f0430e 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 e6166547232d15..0a6cd07b518f33 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 ae57f5887cb933..2321e658a4118d 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 c4917344260f87..658ced6a07efcd 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 6715c5680ce244..6c30a4beb56f2f 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 cc2eaebdc085e1..2f422a81e70abc 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 8644717f187b8d..a07591f78aa823 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 f2b3c530564d15..b01965c65e79f3 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 6056d3a2cbfe1f..b5cdece0ebd285 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 2345703d8a875c..deb4c13e8726de 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 36296b6951d246..20ee77b51eea9c 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 e2de285a85124b..45eafb98710b61 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 262bc9fdc01101..94614272698632 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 3034949bc5adf4..7e7f75879bb515 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 795b26ded3b9c5..4fa1a5b1f4c27e 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 6637100fd76c90..8e452d00121752 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 768a013dc83196..4a24cef909c300 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")
// Check the fatbin wrapper struct: { magic, version, ptr to fatbin, null }, with section.
// CIR: cir.global constant cir_private @__cuda_fatbin_wrapper = #cir.const_record<{
@@ -136,7 +136,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>>
@@ -266,13 +266,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>>
@@ -300,7 +300,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 9848a48bedb7bd..58da391503faf5 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 a7492344615340..7843fad4de638f 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 differentiate
// 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 d4d1c0b3cd203d..60aeff885b3afd 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 54f6f9c54a69c0..cdef1dbeb086ac 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 e548717d7ca666..22508f0ed5c0c2 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 e4f09a9d657cfc..46a13fd6957c07 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 cb0a9287deb44f..2c938c2c74c70b 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 368b0e240121ee..ce7bce984b9228 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 9d7f4a6442837d..67e3dbe68306e6 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 2b5185f8977eb4..25e09700c2d72f 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 a9ac7c63554591..5dc4c9c8d6aece 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 c7c222510988fb..1a2047aec2e45b 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 ee8d188c58f769..fef64ccac50771 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 27dbe07d0bcc09..a7146c0bde7370 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 f16f26127ce194..f444a0ee5b539d 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 c0d883f71d596d..74d5494cac64bd 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 41f76bb58a6f5c..b398326a84be6e 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 d64bb19dca8378..56cd5fc27f2935 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 a6edf942701fa2..27bef91b8c9383 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 068fbcd0f4017e..272a3de389393f 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 47d01aece8b3d3..88fba3d2ac0d6b 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 b3da6dcdd561ad..34f7663ef494ae 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 cbc2c469697983..83893af858bd49 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 415cf19ce95426..d7ce72eadebc63 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 6fa8015cc3c223..37bfe5ec381516 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 4b130a3671a445..0d18af84ec145c 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 9e989ed1ff8a50..b0ff67b9167010 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