[flang-commits] [flang] [fir] Lower to llvm int constants with appropriately typed int attrs (PR #195861)

Ivan R. Ivanov via flang-commits flang-commits at lists.llvm.org
Tue May 5 07:09:59 PDT 2026


https://github.com/ivanradanov created https://github.com/llvm/llvm-project/pull/195861

When we lower fir operations to llvm int constants, we used to always generate `llvm.mlir.constant`s with a i64 integer attribute regardless of the width of the constant type. This made some llvm dialect level folding hit assertions in some cases.

Fix this by generating the appropriately typed integer attributes matching the constant type.

>From fd17843cf4ecc5945f2c3f99fd5e7abb28762ab7 Mon Sep 17 00:00:00 2001
From: Ivan Radanov Ivanov <iivanov at nvidia.com>
Date: Tue, 5 May 2026 07:01:19 -0700
Subject: [PATCH] [fir] Lower to llvm int constants with appropriately typed
 int attrs

When we lower fir operations to llvm int constants, we used to always
generate `llvm.mlir.constant`s with a i64 integer attribute regardless
of the width of the constant type. This made some llvm dialect level
folding hit assertions in some cases.

Fix this by generating the appropriately typed integer attributes
matching the constant type.
---
 flang/lib/Optimizer/Support/Utils.cpp         |  2 +-
 .../Fir/convert-to-llvm-openmp-and-fir.fir    | 10 +-
 flang/test/Fir/convert-to-llvm.fir            |  4 +-
 flang/test/Fir/global-initialization.fir      |  2 +-
 flang/test/Fir/logical-convert.fir            | 92 +++++++++----------
 flang/test/Fir/tbaa.fir                       |  2 +-
 6 files changed, 56 insertions(+), 56 deletions(-)

diff --git a/flang/lib/Optimizer/Support/Utils.cpp b/flang/lib/Optimizer/Support/Utils.cpp
index 507f802f42c22..ba02331ff8928 100644
--- a/flang/lib/Optimizer/Support/Utils.cpp
+++ b/flang/lib/Optimizer/Support/Utils.cpp
@@ -65,7 +65,7 @@ mlir::LLVM::ConstantOp
 fir::genConstantIndex(mlir::Location loc, mlir::Type ity,
                       mlir::ConversionPatternRewriter &rewriter,
                       std::int64_t offset) {
-  auto cattr = rewriter.getI64IntegerAttr(offset);
+  auto cattr = rewriter.getIntegerAttr(ity, offset);
   return mlir::LLVM::ConstantOp::create(rewriter, loc, ity, cattr);
 }
 
diff --git a/flang/test/Fir/convert-to-llvm-openmp-and-fir.fir b/flang/test/Fir/convert-to-llvm-openmp-and-fir.fir
index 3e267503eb61e..cbbe073bc368e 100644
--- a/flang/test/Fir/convert-to-llvm-openmp-and-fir.fir
+++ b/flang/test/Fir/convert-to-llvm-openmp-and-fir.fir
@@ -696,13 +696,13 @@ func.func @_QPsb() {
 
 // CHECK:  omp.declare_reduction @[[EQV_REDUCTION:.*]] : i32 init {
 // CHECK:  ^bb0(%{{.*}}: i32):
-// CHECK:    %[[TRUE:.*]] = llvm.mlir.constant(1 : i64) : i32
+// CHECK:    %[[TRUE:.*]] = llvm.mlir.constant(1 : i32) : i32
 // CHECK:    omp.yield(%[[TRUE]] : i32)
 // CHECK:  } combiner {
 // CHECK:  ^bb0(%[[ARG_1:.*]]: i32, %[[ARG_2:.*]]: i32):
-// CHECK:    %[[ZERO_1:.*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK:    %[[ZERO_1:.*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK:    %[[ARGVAL_1:.*]] = llvm.icmp "ne" %[[ARG_1]], %[[ZERO_1]] : i32
-// CHECK:    %[[ZERO_2:.*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK:    %[[ZERO_2:.*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK:    %[[ARGVAL_2:.*]] = llvm.icmp "ne" %[[ARG_2]], %[[ZERO_2]] : i32
 // CHECK:    %[[RES:.*]] = llvm.icmp "eq" %[[ARGVAL_1]], %[[ARGVAL_2]] : i1
 // CHECK:    %[[RES_EXT:.*]] = llvm.zext %[[RES]] : i1 to i32
@@ -718,9 +718,9 @@ func.func @_QPsb() {
 // CHECK:          %[[ARRAY_ELEM_REF:.*]] = llvm.getelementptr %[[ARRAY_REF]][0, %{{.*}}] : (!llvm.ptr, i64) -> !llvm.ptr
 // CHECK:          %[[ARRAY_ELEM:.*]] = llvm.load %[[ARRAY_ELEM_REF]] : !llvm.ptr -> i32
 // CHECK:          %[[LPRV:.+]] = llvm.load %[[PRV]] : !llvm.ptr -> i32
-// CHECK:          %[[ZERO_1:.*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK:          %[[ZERO_1:.*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK:          %[[ARGVAL_1:.*]] = llvm.icmp "ne" %[[LPRV]], %[[ZERO_1]] : i32
-// CHECK:          %[[ZERO_2:.*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK:          %[[ZERO_2:.*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK:          %[[ARGVAL_2:.*]] = llvm.icmp "ne" %[[ARRAY_ELEM]], %[[ZERO_2]] : i32
 // CHECK:          %[[RES:.*]] = llvm.icmp "eq" %[[ARGVAL_2]], %[[ARGVAL_1]] : i1
 // CHECK:          %[[RES_EXT:.*]] = llvm.zext %[[RES]] : i1 to i32
diff --git a/flang/test/Fir/convert-to-llvm.fir b/flang/test/Fir/convert-to-llvm.fir
index 0866b1daef07a..6981474ef67e8 100644
--- a/flang/test/Fir/convert-to-llvm.fir
+++ b/flang/test/Fir/convert-to-llvm.fir
@@ -1104,7 +1104,7 @@ func.func @box_isarray(%arg0: !fir.box<!fir.array<*:f64>>) -> i1 {
 // CHECK-SAME:                         %[[ARG0:.*]]: !llvm.ptr) -> i1
 // CHECK:         %[[GEP:.*]] = llvm.getelementptr %[[ARG0]][0, 3] : (!llvm.ptr) -> !llvm.ptr, !llvm.struct<(ptr, i{{.*}}, i{{.*}}, i{{.*}}, i{{.*}}, i{{.*}}, i{{.*}})>
 // CHECK:         %[[RANK:.*]] = llvm.load %[[GEP]] : !llvm.ptr -> i8
-// CHECK:         %[[C0_ISARRAY:.*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK:         %[[C0_ISARRAY:.*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK:         %[[IS_ARRAY:.*]] = llvm.icmp "ne" %[[RANK]], %[[C0_ISARRAY]] : i8
 // CHECK:         llvm.return %[[IS_ARRAY]] : i1
 
@@ -1482,7 +1482,7 @@ func.func @select_case_logical(%arg0: !fir.ref<!fir.logical<4>>) {
 // CHECK-LABEL: llvm.func @select_case_logical(
 // CHECK-SAME:                                 %[[ARG0:.*]]: !llvm.ptr
 // CHECK:         %[[LOAD_ARG0:.*]] = llvm.load %[[ARG0]] : !llvm.ptr -> i32
-// CHECK:         %[[CST_ZERO:.*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK:         %[[CST_ZERO:.*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK:         %[[SELECT_VALUE:.*]] = llvm.icmp "ne" %[[LOAD_ARG0]], %[[CST_ZERO]] : i32
 // CHECK:         %[[CST_FALSE:.*]] = llvm.mlir.constant(false) : i1
 // CHECK:         %[[CST_TRUE:.*]] = llvm.mlir.constant(true) : i1
diff --git a/flang/test/Fir/global-initialization.fir b/flang/test/Fir/global-initialization.fir
index b628acd66713b..98c842c4b7551 100644
--- a/flang/test/Fir/global-initialization.fir
+++ b/flang/test/Fir/global-initialization.fir
@@ -40,7 +40,7 @@ fir.global internal @_QEmasklogical : !fir.array<32768x!fir.logical<4>> {
 // CHECK: llvm.mlir.global internal @_QEmasklogical() {addr_space = 0 : i32} : !llvm.array<32768 x i32> {
 // CHECK:   [[VAL0:%.*]] = llvm.mlir.constant(true) : i1
 // CHECK:   [[VAL1:%.*]] = llvm.mlir.undef : !llvm.array<32768 x i32>
-// CHECK:   [[VAL2:%.*]] = llvm.mlir.constant(1 : i64) : i32
+// CHECK:   [[VAL2:%.*]] = llvm.mlir.constant(1 : i32) : i32
 // CHECK:   [[VAL3:%.*]] = llvm.mlir.constant(dense<true> : vector<32768xi1>) : !llvm.array<32768 x i32>
 // CHECK:   llvm.return [[VAL3]] : !llvm.array<32768 x i32>
 // CHECK: }
diff --git a/flang/test/Fir/logical-convert.fir b/flang/test/Fir/logical-convert.fir
index cf07480e641a9..0ebda8d5c29e7 100644
--- a/flang/test/Fir/logical-convert.fir
+++ b/flang/test/Fir/logical-convert.fir
@@ -5,7 +5,7 @@
 
 // -----
 // CHECK-LABEL: @test_l1_i1
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8
 // CHECK: llvm.return [[t1]] : i1
 func.func @test_l1_i1(%arg0: !fir.logical<1>) -> i1 {
@@ -14,7 +14,7 @@ func.func @test_l1_i1(%arg0: !fir.logical<1>) -> i1 {
 }
 // -----
 // CHECK-LABEL: @test_l1_i8
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8
 // CHECK: llvm.return [[t2]] : i8
@@ -24,7 +24,7 @@ func.func @test_l1_i8(%arg0: !fir.logical<1>) -> i8 {
 }
 // -----
 // CHECK-LABEL: @test_l1_i16
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16
 // CHECK: llvm.return [[t2]] : i16
@@ -34,7 +34,7 @@ func.func @test_l1_i16(%arg0: !fir.logical<1>) -> i16 {
 }
 // -----
 // CHECK-LABEL: @test_l1_i32
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32
 // CHECK: llvm.return [[t2]] : i32
@@ -44,7 +44,7 @@ func.func @test_l1_i32(%arg0: !fir.logical<1>) -> i32 {
 }
 // -----
 // CHECK-LABEL: @test_l1_i64
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64
 // CHECK: llvm.return [[t2]] : i64
@@ -54,7 +54,7 @@ func.func @test_l1_i64(%arg0: !fir.logical<1>) -> i64 {
 }
 // -----
 // CHECK-LABEL: @test_l2_i1
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i16) : i16
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16
 // CHECK: llvm.return [[t1]] : i1
 func.func @test_l2_i1(%arg0: !fir.logical<2>) -> i1 {
@@ -63,7 +63,7 @@ func.func @test_l2_i1(%arg0: !fir.logical<2>) -> i1 {
 }
 // -----
 // CHECK-LABEL: @test_l2_i8
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i16) : i16
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8
 // CHECK: llvm.return [[t2]] : i8
@@ -73,7 +73,7 @@ func.func @test_l2_i8(%arg0: !fir.logical<2>) -> i8 {
 }
 // -----
 // CHECK-LABEL: @test_l2_i16
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i16) : i16
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16
 // CHECK: llvm.return [[t2]] : i16
@@ -83,7 +83,7 @@ func.func @test_l2_i16(%arg0: !fir.logical<2>) -> i16 {
 }
 // -----
 // CHECK-LABEL: @test_l2_i32
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i16) : i16
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32
 // CHECK: llvm.return [[t2]] : i32
@@ -93,7 +93,7 @@ func.func @test_l2_i32(%arg0: !fir.logical<2>) -> i32 {
 }
 // -----
 // CHECK-LABEL: @test_l2_i64
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i16) : i16
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64
 // CHECK: llvm.return [[t2]] : i64
@@ -103,7 +103,7 @@ func.func @test_l2_i64(%arg0: !fir.logical<2>) -> i64 {
 }
 // -----
 // CHECK-LABEL: @test_l4_i1
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32
 // CHECK: llvm.return [[t1]] : i1
 func.func @test_l4_i1(%arg0: !fir.logical<4>) -> i1 {
@@ -112,7 +112,7 @@ func.func @test_l4_i1(%arg0: !fir.logical<4>) -> i1 {
 }
 // -----
 // CHECK-LABEL: @test_l4_i8
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8
 // CHECK: llvm.return [[t2]] : i8
@@ -122,7 +122,7 @@ func.func @test_l4_i8(%arg0: !fir.logical<4>) -> i8 {
 }
 // -----
 // CHECK-LABEL: @test_l4_i16
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16
 // CHECK: llvm.return [[t2]] : i16
@@ -132,7 +132,7 @@ func.func @test_l4_i16(%arg0: !fir.logical<4>) -> i16 {
 }
 // -----
 // CHECK-LABEL: @test_l4_i32
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32
 // CHECK: llvm.return [[t2]] : i32
@@ -142,7 +142,7 @@ func.func @test_l4_i32(%arg0: !fir.logical<4>) -> i32 {
 }
 // -----
 // CHECK-LABEL: @test_l4_i64
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64
 // CHECK: llvm.return [[t2]] : i64
@@ -233,7 +233,7 @@ func.func @test_i1_l8(%arg0: i1) -> !fir.logical<8> {
 }
 // -----
 // CHECK-LABEL: @test_i8_l1
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8
 // CHECK: llvm.return [[t2]] : i8
@@ -243,7 +243,7 @@ func.func @test_i8_l1(%arg0: i8) -> !fir.logical<1> {
 }
 // -----
 // CHECK-LABEL: @test_i8_l2
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16
 // CHECK: llvm.return [[t2]] : i16
@@ -253,7 +253,7 @@ func.func @test_i8_l2(%arg0: i8) -> !fir.logical<2> {
 }
 // -----
 // CHECK-LABEL: @test_i8_l4
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32
 // CHECK: llvm.return [[t2]] : i32
@@ -263,7 +263,7 @@ func.func @test_i8_l4(%arg0: i8) -> !fir.logical<4> {
 }
 // -----
 // CHECK-LABEL: @test_i8_l8
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64
 // CHECK: llvm.return [[t2]] : i64
@@ -273,7 +273,7 @@ func.func @test_i8_l8(%arg0: i8) -> !fir.logical<8> {
 }
 // -----
 // CHECK-LABEL: @test_i16_l1
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i16) : i16
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8
 // CHECK: llvm.return [[t2]] : i8
@@ -283,7 +283,7 @@ func.func @test_i16_l1(%arg0: i16) -> !fir.logical<1> {
 }
 // -----
 // CHECK-LABEL: @test_i16_l2
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i16) : i16
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16
 // CHECK: llvm.return [[t2]] : i16
@@ -293,7 +293,7 @@ func.func @test_i16_l2(%arg0: i16) -> !fir.logical<2> {
 }
 // -----
 // CHECK-LABEL: @test_i16_l4
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i16) : i16
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32
 // CHECK: llvm.return [[t2]] : i32
@@ -303,7 +303,7 @@ func.func @test_i16_l4(%arg0: i16) -> !fir.logical<4> {
 }
 // -----
 // CHECK-LABEL: @test_i16_l8
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i16) : i16
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64
 // CHECK: llvm.return [[t2]] : i64
@@ -313,7 +313,7 @@ func.func @test_i16_l8(%arg0: i16) -> !fir.logical<8> {
 }
 // -----
 // CHECK-LABEL: @test_i32_l1
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8
 // CHECK: llvm.return [[t2]] : i8
@@ -323,7 +323,7 @@ func.func @test_i32_l1(%arg0: i32) -> !fir.logical<1> {
 }
 // -----
 // CHECK-LABEL: @test_i32_l2
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16
 // CHECK: llvm.return [[t2]] : i16
@@ -333,7 +333,7 @@ func.func @test_i32_l2(%arg0: i32) -> !fir.logical<2> {
 }
 // -----
 // CHECK-LABEL: @test_i32_l4
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32
 // CHECK: llvm.return [[t2]] : i32
@@ -343,7 +343,7 @@ func.func @test_i32_l4(%arg0: i32) -> !fir.logical<4> {
 }
 // -----
 // CHECK-LABEL: @test_i32_l8
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64
 // CHECK: llvm.return [[t2]] : i64
@@ -393,7 +393,7 @@ func.func @test_i64_l8(%arg0: i64) -> !fir.logical<8> {
 }
 // -----
 // CHECK-LABEL: @test_l1_l2
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16
 // CHECK: llvm.return [[t2]] : i16
@@ -403,7 +403,7 @@ func.func @test_l1_l2(%arg0: !fir.logical<1>) -> !fir.logical<2> {
 }
 // -----
 // CHECK-LABEL: @test_l1_l4
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32
 // CHECK: llvm.return [[t2]] : i32
@@ -413,7 +413,7 @@ func.func @test_l1_l4(%arg0: !fir.logical<1>) -> !fir.logical<4> {
 }
 // -----
 // CHECK-LABEL: @test_l1_l8
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64
 // CHECK: llvm.return [[t2]] : i64
@@ -423,7 +423,7 @@ func.func @test_l1_l8(%arg0: !fir.logical<1>) -> !fir.logical<8> {
 }
 // -----
 // CHECK-LABEL: @test_l2_l1
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i16) : i16
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8
 // CHECK: llvm.return [[t2]] : i8
@@ -433,7 +433,7 @@ func.func @test_l2_l1(%arg0: !fir.logical<2>) -> !fir.logical<1> {
 }
 // -----
 // CHECK-LABEL: @test_l2_l4
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i16) : i16
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32
 // CHECK: llvm.return [[t2]] : i32
@@ -443,7 +443,7 @@ func.func @test_l2_l4(%arg0: !fir.logical<2>) -> !fir.logical<4> {
 }
 // -----
 // CHECK-LABEL: @test_l2_l8
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i16) : i16
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64
 // CHECK: llvm.return [[t2]] : i64
@@ -453,7 +453,7 @@ func.func @test_l2_l8(%arg0: !fir.logical<2>) -> !fir.logical<8> {
 }
 // -----
 // CHECK-LABEL: @test_l4_l1
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8
 // CHECK: llvm.return [[t2]] : i8
@@ -463,7 +463,7 @@ func.func @test_l4_l1(%arg0: !fir.logical<4>) -> !fir.logical<1> {
 }
 // -----
 // CHECK-LABEL: @test_l4_l2
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16
 // CHECK: llvm.return [[t2]] : i16
@@ -473,7 +473,7 @@ func.func @test_l4_l2(%arg0: !fir.logical<4>) -> !fir.logical<2> {
 }
 // -----
 // CHECK-LABEL: @test_l4_l8
-// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32
 // CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64
 // CHECK: llvm.return [[t2]] : i64
@@ -513,9 +513,9 @@ func.func @test_l8_l4(%arg0: !fir.logical<8>) -> !fir.logical<4> {
 }
 // -----
 // CHECK-LABEL: @test_logical_and_l4
-// CHECK: [[ZERO0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[ZERO0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[A:%[0-9]*]] = llvm.icmp "ne" %arg0, [[ZERO0]] : i32
-// CHECK: [[ZERO1:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[ZERO1:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[B:%[0-9]*]] = llvm.icmp "ne" %arg1, [[ZERO1]] : i32
 // CHECK: [[RES:%[0-9]*]] = llvm.and [[A]], [[B]] : i1
 // CHECK: [[EXT:%[0-9]*]] = llvm.zext [[RES]] : i1 to i32
@@ -526,9 +526,9 @@ func.func @test_logical_and_l4(%arg0: !fir.logical<4>, %arg1: !fir.logical<4>) -
 }
 // -----
 // CHECK-LABEL: @test_logical_or_l4
-// CHECK: [[ZERO0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[ZERO0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[A:%[0-9]*]] = llvm.icmp "ne" %arg0, [[ZERO0]] : i32
-// CHECK: [[ZERO1:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[ZERO1:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[B:%[0-9]*]] = llvm.icmp "ne" %arg1, [[ZERO1]] : i32
 // CHECK: [[RES:%[0-9]*]] = llvm.or [[A]], [[B]] : i1
 // CHECK: [[EXT:%[0-9]*]] = llvm.zext [[RES]] : i1 to i32
@@ -539,9 +539,9 @@ func.func @test_logical_or_l4(%arg0: !fir.logical<4>, %arg1: !fir.logical<4>) ->
 }
 // -----
 // CHECK-LABEL: @test_eqv_l4
-// CHECK: [[ZERO0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[ZERO0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[A:%[0-9]*]] = llvm.icmp "ne" %arg0, [[ZERO0]] : i32
-// CHECK: [[ZERO1:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[ZERO1:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[B:%[0-9]*]] = llvm.icmp "ne" %arg1, [[ZERO1]] : i32
 // CHECK: [[RES:%[0-9]*]] = llvm.icmp "eq" [[A]], [[B]] : i1
 // CHECK: [[EXT:%[0-9]*]] = llvm.zext [[RES]] : i1 to i32
@@ -552,9 +552,9 @@ func.func @test_eqv_l4(%arg0: !fir.logical<4>, %arg1: !fir.logical<4>) -> !fir.l
 }
 // -----
 // CHECK-LABEL: @test_neqv_l4
-// CHECK: [[ZERO0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[ZERO0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[A:%[0-9]*]] = llvm.icmp "ne" %arg0, [[ZERO0]] : i32
-// CHECK: [[ZERO1:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[ZERO1:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[B:%[0-9]*]] = llvm.icmp "ne" %arg1, [[ZERO1]] : i32
 // CHECK: [[RES:%[0-9]*]] = llvm.icmp "ne" [[A]], [[B]] : i1
 // CHECK: [[EXT:%[0-9]*]] = llvm.zext [[RES]] : i1 to i32
@@ -575,9 +575,9 @@ func.func @test_logical_and_i1(%arg0: i1, %arg1: i1) -> i1 {
 // -----
 // Test on i32 type
 // CHECK-LABEL: @test_logical_and_i32
-// CHECK: [[ZERO0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[ZERO0:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[A:%[0-9]*]] = llvm.icmp "ne" %arg0, [[ZERO0]] : i32
-// CHECK: [[ZERO1:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32
+// CHECK: [[ZERO1:%[0-9]*]] = llvm.mlir.constant(0 : i32) : i32
 // CHECK: [[B:%[0-9]*]] = llvm.icmp "ne" %arg1, [[ZERO1]] : i32
 // CHECK: [[RES:%[0-9]*]] = llvm.and [[A]], [[B]] : i1
 // CHECK: [[EXT:%[0-9]*]] = llvm.zext [[RES]] : i1 to i32
diff --git a/flang/test/Fir/tbaa.fir b/flang/test/Fir/tbaa.fir
index 6c9836afae9e8..3b45b177f49c6 100644
--- a/flang/test/Fir/tbaa.fir
+++ b/flang/test/Fir/tbaa.fir
@@ -271,7 +271,7 @@ func.func @tbaa(%arg0: !fir.box<!fir.array<*:f64>>) -> i1 {
 // CHECK-SAME:                    %[[VAL_0:.*]]: !llvm.ptr) -> i1 {
 // CHECK:           %[[VAL_1:.*]] = llvm.getelementptr %[[VAL_0]][0, 3] : (!llvm.ptr) -> !llvm.ptr, !llvm.struct<(ptr, i64, i32, i8, i8, i8, i8, array<15 x array<3 x i64>>)>
 // CHECK:           %[[VAL_2:.*]] = llvm.load %[[VAL_1]] {tbaa = [#[[$BOXT]]]} : !llvm.ptr -> i8
-// CHECK:           %[[VAL_3:.*]] = llvm.mlir.constant(0 : i64) : i8
+// CHECK:           %[[VAL_3:.*]] = llvm.mlir.constant(0 : i8) : i8
 // CHECK:           %[[VAL_4:.*]] = llvm.icmp "ne" %[[VAL_2]], %[[VAL_3]] : i8
 // CHECK:           llvm.return %[[VAL_4]] : i1
 // CHECK:         }



More information about the flang-commits mailing list