1! RUN: bbc -emit-fir -hlfir=false -o - %s | FileCheck %s 2 3! CHECK-LABEL: func @_QPkagi 4function kagi(index) 5 ! CHECK: %[[V_0:[0-9]+]] = fir.alloca i32 {bindc_name = "kagi" 6 ! CHECK: %[[V_1:[0-9]+]] = fir.load %arg0 : !fir.ref<i32> 7 ! CHECK: %[[V_2:[0-9]+]] = arith.cmpi slt, %[[V_1]], %c0{{.*}} : i32 8 ! CHECK: cf.cond_br %[[V_2]], ^bb2, ^bb1 9 ! CHECK: ^bb1: // pred: ^bb0 10 ! CHECK: %[[V_3:[0-9]+]] = arith.cmpi sgt, %[[V_1]], %c0{{.*}} : i32 11 ! CHECK: cf.cond_br %[[V_3]], ^bb4, ^bb3 12 ! CHECK: ^bb2: // pred: ^bb0 13 ! CHECK: fir.store %c1{{.*}} to %[[V_0]] : !fir.ref<i32> 14 ! CHECK: cf.br ^bb5 15 ! CHECK: ^bb3: // pred: ^bb1 16 ! CHECK: fir.store %c2{{.*}} to %[[V_0]] : !fir.ref<i32> 17 ! CHECK: cf.br ^bb5 18 ! CHECK: ^bb4: // pred: ^bb1 19 ! CHECK: fir.store %c3{{.*}} to %[[V_0]] : !fir.ref<i32> 20 ! CHECK: cf.br ^bb5 21 ! CHECK: ^bb5: // 3 preds: ^bb2, ^bb3, ^bb4 22 ! CHECK: %[[V_4:[0-9]+]] = fir.load %[[V_0]] : !fir.ref<i32> 23 ! CHECK: return %[[V_4]] : i32 24 if (index) 7, 8, 9 25 kagi = 0; return 267 kagi = 1; return 278 kagi = 2; return 289 kagi = 3; return 29end 30 31! CHECK-LABEL: func @_QPkagf 32function kagf(findex) 33 ! CHECK: %[[V_0:[0-9]+]] = fir.alloca i32 {bindc_name = "kagf" 34 ! CHECK: %[[V_1:[0-9]+]] = fir.load %arg0 : !fir.ref<f32> 35 ! CHECK: %[[V_2:[0-9]+]] = fir.load %arg0 : !fir.ref<f32> 36 ! CHECK: %[[V_3:[0-9]+]] = arith.addf %[[V_1]], %[[V_2]] {{.*}} : f32 37 ! CHECK: %[[V_4:[0-9]+]] = arith.addf %[[V_3]], %[[V_3]] {{.*}} : f32 38 ! CHECK: %cst = arith.constant 0.000000e+00 : f32 39 ! CHECK: %[[V_5:[0-9]+]] = arith.cmpf olt, %[[V_4]], %cst {{.*}} : f32 40 ! CHECK: cf.cond_br %[[V_5]], ^bb2, ^bb1 41 ! CHECK: ^bb1: // pred: ^bb0 42 ! CHECK: %[[V_6:[0-9]+]] = arith.cmpf ogt, %[[V_4]], %cst {{.*}} : f32 43 ! CHECK: cf.cond_br %[[V_6]], ^bb4, ^bb3 44 ! CHECK: ^bb2: // pred: ^bb0 45 ! CHECK: fir.store %c1{{.*}} to %[[V_0]] : !fir.ref<i32> 46 ! CHECK: cf.br ^bb5 47 ! CHECK: ^bb3: // pred: ^bb1 48 ! CHECK: fir.store %c2{{.*}} to %[[V_0]] : !fir.ref<i32> 49 ! CHECK: cf.br ^bb5 50 ! CHECK: ^bb4: // pred: ^bb1 51 ! CHECK: fir.store %c3{{.*}} to %[[V_0]] : !fir.ref<i32> 52 ! CHECK: cf.br ^bb5 53 ! CHECK: ^bb5: // 3 preds: ^bb2, ^bb3, ^bb4 54 ! CHECK: %[[V_7:[0-9]+]] = fir.load %[[V_0]] : !fir.ref<i32> 55 ! CHECK: return %[[V_7]] : i32 56 if (findex+findex) 7, 8, 9 57 kagf = 0; return 587 kagf = 1; return 598 kagf = 2; return 609 kagf = 3; return 61end 62 63! CHECK-LABEL: func @_QQmain 64 do i = -2, 2 65 print*, kagi(i) 66 enddo 67 68 print*, kagf(-2.0) 69 print*, kagf(-1.0) 70 print*, kagf(-0.0) 71 print*, kagf( 0.0) 72 print*, kagf(+0.0) 73 print*, kagf(+1.0) 74 print*, kagf(+2.0) 75end 76