-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
This is a conversion which flang generates when working with single characters.
This is a reduced example (based on code generated by flang) which causes this error:
fir.convert example
"builtin.module"() ({
"func.func"() <{arg_attrs = [{fir.bindc_name = "transa"}, {fir.bindc_name = "transb"}, {fir.bindc_name = "m"}, {fir.bindc_name = "n"}, {fir.bindc_name = "k"}, {fir.bindc_name = "alpha"}, {fir.bindc_name = "a"}, {fir.bindc_name = "lda"}, {fir.bindc_name = "b"}, {fir.bindc_name = "ldb"}, {fir.bindc_name = "beta"}, {fir.bindc_name = "c"}, {fir.bindc_name = "ldc"}], function_type = (!fir.boxchar<1>, !fir.boxchar<1>, !fir.ref<i32>, !fir.ref<i32>, !fir.ref<i32>, !fir.ref<f32>, !fir.ref<!fir.array<?x?xf32>>, !fir.ref<i32>, !fir.ref<!fir.array<?x?xf32>>, !fir.ref<i32>, !fir.ref<f32>, !fir.ref<!fir.array<?x?xf32>>, !fir.ref<i32>) -> (), sym_name = "_QPsgemm"}> ({
^bb0(%arg0: !fir.boxchar<1>, %arg1: !fir.boxchar<1>, %arg2: !fir.ref<i32>, %arg3: !fir.ref<i32>, %arg4: !fir.ref<i32>, %arg5: !fir.ref<f32>, %arg6: !fir.ref<!fir.array<?x?xf32>>, %arg7: !fir.ref<i32>, %arg8: !fir.ref<!fir.array<?x?xf32>>, %arg9: !fir.ref<i32>, %arg10: !fir.ref<f32>, %arg11: !fir.ref<!fir.array<?x?xf32>>, %arg12: !fir.ref<i32>):
%6 = "fir.dummy_scope"() : () -> !fir.dscope
%35:2 = "fir.unboxchar"(%arg0) : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
%36 = "fir.convert"(%35#0) : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1>>
%37 = "arith.constant"() <{value = 1 : index}> : () -> index
%38:2 = "hlfir.declare"(%36, %37, %6) <{operandSegmentSizes = array<i32: 1, 0, 1, 1>, uniq_name = "_QFsgemmEtransa"}> : (!fir.ref<!fir.char<1>>, index, !fir.dscope) -> (!fir.ref<!fir.char<1>>, !fir.ref<!fir.char<1>>)
%72 = "fir.address_of"() <{symbol = @_QQclX4E}> : () -> !fir.ref<!fir.char<1>>
%73 = "arith.constant"() <{value = 1 : index}> : () -> index
%74:2 = "hlfir.declare"(%72, %73) <{fortran_attrs = #fir.var_attrs<parameter>, operandSegmentSizes = array<i32: 1, 0, 1, 0>, uniq_name = "_QQclX4E"}> : (!fir.ref<!fir.char<1>>, index) -> (!fir.ref<!fir.char<1>>, !fir.ref<!fir.char<1>>)
%75 = "fir.emboxchar"(%38#1, %37) : (!fir.ref<!fir.char<1>>, index) -> !fir.boxchar<1>
%76 = "hlfir.as_expr"(%74#0) : (!fir.ref<!fir.char<1>>) -> !hlfir.expr<!fir.char<1>>
%77:3 = "hlfir.associate"(%76, %73) <{operandSegmentSizes = array<i32: 1, 0, 1>}> {adapt.valuebyref} : (!hlfir.expr<!fir.char<1>>, index) -> (!fir.ref<!fir.char<1>>, !fir.ref<!fir.char<1>>, i1)
%78 = "fir.emboxchar"(%77#1, %73) : (!fir.ref<!fir.char<1>>, index) -> !fir.boxchar<1>
%79 = "fir.call"(%75, %78) <{callee = @_QPlsame, fastmath = #arith.fastmath<contract>}> : (!fir.boxchar<1>, !fir.boxchar<1>) -> !fir.logical<4>
"cf.br"()[^bb7] : () -> ()
^bb7: // 4 preds: ^bb1, ^bb3, ^bb5, ^bb6
"func.return"() : () -> ()
}) : () -> ()
"func.func"() <{function_type = (!fir.boxchar<1>, !fir.boxchar<1>) -> !fir.logical<4>, sym_name = "_QPlsame", sym_visibility = "private"}> ({
}) : () -> ()
"fir.global"() <{constant, linkName = "linkonce", sym_name = "_QQclX4E", symref = @_QQclX4E, type = !fir.char<1>}> ({
%3 = "fir.string_lit"() {size = 1 : i64, value = "N"} : () -> !fir.char<1>
"fir.has_value"(%3) : (!fir.char<1>) -> ()
}) : () -> ()
}) {dlti.dl_spec = #dlti.dl_spec<i64 = dense<64> : vector<2xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, f80 = dense<128> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f64 = dense<64> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, fir.defaultkind = "a1c4d8i4l4r4", fir.kindmap = "", llvm.data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", llvm.ident = "flang version 20.1.7 (git@github.com:llvm/llvm-project.git 6146a88f60492b520a36f8f8f3231e15f3cc6082)", llvm.target_triple = "x86_64-unknown-linux-gnu", omp.is_gpu = false, omp.is_target_device = false, omp.target_triples = [], omp.version = #omp.version<version = 11>} : () -> ()Also attached original Fortran file, and MLIR produced from it: repro.zip
Flang command to compile the file:
flang -fc1 -emit-hlfir -mmlir -mlir-print-op-generic -o - -fopenmp -module-dir /tmp/tmp.ygWi7G7jB3 -ffixed-form -x f95-cpp-input sgemm_orig.fReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels