// RUN: mlir-opt %s -convert-cf-to-llvm | FileCheck %s
func.func @name(%flag: i32, %pred: i1){
// Test cf.br lowering failure with type mismatch
// CHECK: cf.br
%c0 = arith.constant 0 : index
cf.br ^bb1(%c0 : index)
// Test cf.cond_br lowering failure with type mismatch in false_dest
// CHECK: cf.cond_br
^bb1(%0: index): // 2 preds: ^bb0, ^bb2
%c1 = arith.constant 1 : i1
%c2 = arith.constant 1 : index
cf.cond_br %pred, ^bb2(%c1: i1), ^bb3(%c2: index)
// Test cf.cond_br lowering failure with type mismatch in true_dest
// CHECK: cf.cond_br
^bb2(%1: i1):
%c3 = arith.constant 1 : i1
%c4 = arith.constant 1 : index
cf.cond_br %pred, ^bb3(%c4: index), ^bb2(%c3: i1)
// Test cf.switch lowering failure with type mismatch in default case
// CHECK: cf.switch
^bb3(%2: index): // pred: ^bb1
%c5 = arith.constant 1 : i1
%c6 = arith.constant 1 : index
cf.switch %flag : i32, [
default: ^bb1(%c6 : index),
42: ^bb4(%c5 : i1)
]
// Test cf.switch lowering failure with type mismatch in non-default case
// CHECK: cf.switch
^bb4(%3: i1): // pred: ^bb1
%c7 = arith.constant 1 : i1
%c8 = arith.constant 1 : index
cf.switch %flag : i32, [
default: ^bb2(%c7 : i1),
41: ^bb1(%c8 : index)
]
}