// RUN: fir-opt --canonicalize %s | FileCheck %s // CHECK-LABEL: @ftest func.func @ftest(%x : i1) -> i1 { // this pair of converts should be folded and DCEd %1 = fir.convert %x : (i1) -> !fir.logical<1> %2 = fir.convert %1 : (!fir.logical<1>) -> i1 // CHECK-NEXT: return %{{.*}} : i1 return %2 : i1 } // CHECK-LABEL: @gtest func.func @gtest(%x : !fir.logical<2>) -> !fir.logical<2> { // this pair of converts should be folded and DCEd %1 = fir.convert %x : (!fir.logical<2>) -> i1 %2 = fir.convert %1 : (i1) -> !fir.logical<2> // CHECK-NEXT: return %{{.*}} : !fir.logical<2> return %2 : !fir.logical<2> } // CHECK-LABEL: @htest func.func @htest(%x : !fir.int<4>) -> !fir.int<4> { // these converts are NOPs and should be folded away %1 = fir.convert %x : (!fir.int<4>) -> !fir.int<4> %2 = fir.convert %1 : (!fir.int<4>) -> !fir.int<4> // CHECK-NEXT: return %{{.*}} : !fir.int<4> return %2 : !fir.int<4> } // CHECK-LABEL: @ctest func.func @ctest() -> index { %1 = arith.constant 10 : i32 %2 = fir.convert %1 : (i32) -> index // CHECK-NEXT: %{{.*}} = arith.constant 10 : index // CHECK-NEXT: return %{{.*}} : index return %2 : index }