diff --git a/flang/lib/Optimizer/CodeGen/TypeConverter.h b/flang/lib/Optimizer/CodeGen/TypeConverter.h --- a/flang/lib/Optimizer/CodeGen/TypeConverter.h +++ b/flang/lib/Optimizer/CodeGen/TypeConverter.h @@ -57,6 +57,10 @@ addConversion( [&](fir::CharacterType charTy) { return convertCharType(charTy); }); addConversion([&](HeapType heap) { return convertPointerLike(heap); }); + addConversion([&](fir::IntegerType intTy) { + return mlir::IntegerType::get( + &getContext(), kindMapping.getIntegerBitsize(intTy.getFKind())); + }); addConversion([&](fir::LogicalType boolTy) { return mlir::IntegerType::get( &getContext(), kindMapping.getLogicalBitsize(boolTy.getFKind())); diff --git a/flang/test/Fir/types-to-llvm.fir b/flang/test/Fir/types-to-llvm.fir --- a/flang/test/Fir/types-to-llvm.fir +++ b/flang/test/Fir/types-to-llvm.fir @@ -128,6 +128,30 @@ // ----- +// Test `!fir.integer` conversion. + +func private @foo0(%arg0: !fir.int<1>) +// CHECK-LABEL: foo0 +// CHECK-SAME: i8 + +func private @foo1(%arg0: !fir.int<2>) +// CHECK-LABEL: foo1 +// CHECK-SAME: i16 + +func private @foo2(%arg0: !fir.int<4>) +// CHECK-LABEL: foo2 +// CHECK-SAME: i32 + +func private @foo3(%arg0: !fir.int<8>) +// CHECK-LABEL: foo3 +// CHECK-SAME: i64 + +func private @foo4(%arg0: !fir.int<16>) +// CHECK-LABEL: foo4 +// CHECK-SAME: i128 + +// ----- + // Test `!fir.logical` conversion. func private @foo0(%arg0: !fir.logical<1>)