/// Verify that converts are only generated one per fir.declare // RUN: fir-opt %s --fir-to-memref --allow-unregistered-dialect | FileCheck %s // Derived from // do i = 1, n // a(i) = i // call y(i) // call z(i) // enddo // CHECK-LABEL: func.func @x_ // CHECK: [[ALLOCA:%.+]] = memref.alloca() {bindc_name = "i"} : memref // CHECK-NEXT: [[CONVERT0:%[0-9]]] = fir.convert [[ALLOCA]] : (memref) -> !fir.ref // CHECK-NEXT: [[DECLARE:%[0-9]]] = fir.declare [[CONVERT0]] // CHECK-NEXT: [[CONVERT1:%[0-9]]] = fir.convert [[DECLARE]] : (!fir.ref) -> memref // CHECK-NEXT: [[LOAD:%[0-9]]] = memref.load [[CONVERT1]] // CHECK-NEXT: [[CONVERT2:%[0-9]]] = fir.convert [[CONVERT1]] : (memref) -> !fir.ref // CHECK-NEXT: fir.call @y_([[CONVERT2]]) // CHECK-NEXT: [[CONVERT3:%[0-9]]] = fir.convert [[CONVERT1]] : (memref) -> !fir.ref // CHECK-NEXT: fir.call @z_([[CONVERT3]]) func.func @x_() attributes {fir.internal_name = "_QPx"} { %1 = fir.alloca i32 {bindc_name = "i"} %2 = fir.declare %1 {uniq_name = "_QFxEi"} : (!fir.ref) -> !fir.ref %3 = fir.load %2 : !fir.ref fir.call @y_(%2) fastmath : (!fir.ref) -> () fir.call @z_(%2) fastmath : (!fir.ref) -> () return }