49 lines · plain
1// RUN: cir-opt %s -cir-flatten-cfg -o - | FileCheck %s2 3!s32i = !cir.int<s, 32>4 5module {6 cir.func @foo(%arg0: !s32i) -> !s32i {7 %4 = cir.cast int_to_bool %arg0 : !s32i -> !cir.bool8 cir.if %4 {9 %5 = cir.const #cir.int<1> : !s32i10 cir.return %5 : !s32i11 } else {12 %5 = cir.const #cir.int<0> : !s32i13 cir.return %5 : !s32i14 }15 cir.return %arg0 : !s32i16 }17// CHECK: cir.func{{.*}} @foo(%arg0: !s32i) -> !s32i {18// CHECK-NEXT: %0 = cir.cast int_to_bool %arg0 : !s32i -> !cir.bool19// CHECK-NEXT: cir.brcond %0 ^bb1, ^bb220// CHECK-NEXT: ^bb1: // pred: ^bb021// CHECK-NEXT: %1 = cir.const #cir.int<1> : !s32i22// CHECK-NEXT: cir.return %1 : !s32i23// CHECK-NEXT: ^bb2: // pred: ^bb024// CHECK-NEXT: %2 = cir.const #cir.int<0> : !s32i25// CHECK-NEXT: cir.return %2 : !s32i26// CHECK-NEXT: ^bb3: // no predecessors27// CHECK-NEXT: cir.return %arg0 : !s32i28// CHECK-NEXT: }29 30 cir.func @onlyIf(%arg0: !s32i) -> !s32i {31 %4 = cir.cast int_to_bool %arg0 : !s32i -> !cir.bool32 cir.if %4 {33 %5 = cir.const #cir.int<1> : !s32i34 cir.return %5 : !s32i35 }36 cir.return %arg0 : !s32i37 }38// CHECK: cir.func{{.*}} @onlyIf(%arg0: !s32i) -> !s32i {39// CHECK-NEXT: %0 = cir.cast int_to_bool %arg0 : !s32i -> !cir.bool40// CHECK-NEXT: cir.brcond %0 ^bb1, ^bb241// CHECK-NEXT: ^bb1: // pred: ^bb042// CHECK-NEXT: %1 = cir.const #cir.int<1> : !s32i43// CHECK-NEXT: cir.return %1 : !s32i44// CHECK-NEXT: ^bb2: // pred: ^bb045// CHECK-NEXT: cir.return %arg0 : !s32i46// CHECK-NEXT: }47 48}49