blob: 03848bf8d0633b26bc5e4da97b0c43c1e384ff97 [file]
// RUN: cir-opt %s -cir-flatten-cfg -o - | FileCheck %s
!s32i = !cir.int<s, 32>
module {
cir.func @foo(%arg0: !s32i) -> !s32i {
%4 = cir.cast(int_to_bool, %arg0 : !s32i), !cir.bool
cir.if %4 {
%5 = cir.const #cir.int<1> : !s32i
cir.return %5 : !s32i
} else {
%5 = cir.const #cir.int<0> : !s32i
cir.return %5 : !s32i
}
cir.return %arg0 : !s32i
}
// CHECK: cir.func @foo(%arg0: !s32i) -> !s32i {
// CHECK-NEXT: %0 = cir.cast(int_to_bool, %arg0 : !s32i), !cir.bool
// CHECK-NEXT: cir.brcond %0 ^bb1, ^bb2
// CHECK-NEXT: ^bb1: // pred: ^bb0
// CHECK-NEXT: %1 = cir.const #cir.int<1> : !s32i
// CHECK-NEXT: cir.return %1 : !s32i
// CHECK-NEXT: ^bb2: // pred: ^bb0
// CHECK-NEXT: %2 = cir.const #cir.int<0> : !s32i
// CHECK-NEXT: cir.return %2 : !s32i
// CHECK-NEXT: ^bb3: // no predecessors
// CHECK-NEXT: cir.return %arg0 : !s32i
// CHECK-NEXT: }
cir.func @onlyIf(%arg0: !s32i) -> !s32i {
%4 = cir.cast(int_to_bool, %arg0 : !s32i), !cir.bool
cir.if %4 {
%5 = cir.const #cir.int<1> : !s32i
cir.return %5 : !s32i
}
cir.return %arg0 : !s32i
}
// CHECK: cir.func @onlyIf(%arg0: !s32i) -> !s32i {
// CHECK-NEXT: %0 = cir.cast(int_to_bool, %arg0 : !s32i), !cir.bool
// CHECK-NEXT: cir.brcond %0 ^bb1, ^bb2
// CHECK-NEXT: ^bb1: // pred: ^bb0
// CHECK-NEXT: %1 = cir.const #cir.int<1> : !s32i
// CHECK-NEXT: cir.return %1 : !s32i
// CHECK-NEXT: ^bb2: // pred: ^bb0
// CHECK-NEXT: cir.return %arg0 : !s32i
// CHECK-NEXT: }
}