blob: 3f817c793643ff7941d052a15b312f874fcee53c [file] [log] [blame]
// 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: }
}