// RUN: mlir-opt %s -inline='default-pipeline=' | FileCheck %s // RUN: mlir-opt %s --mlir-disable-threading -inline='default-pipeline=' | FileCheck %s module { // CHECK-LABEL: func.func @parent1 func.func @parent1(%arg0: i32) -> i32 { // CHECK: call @child %0 = call @child(%arg0) : (i32) -> i32 return %0 : i32 } // CHECK-LABEL: func.func @parent2 func.func @parent2(%arg0: i32) -> i32 { // CHECK: call @child %0 = call @child(%arg0) : (i32) -> i32 return %0 : i32 } // CHECK-LABEL: func.func @child func.func @child(%arg0: i32) -> i32 { %c10_i32 = arith.constant 10 : i32 %c1_i32 = arith.constant 1 : i32 %0 = arith.cmpi sge, %arg0, %c10_i32 : i32 %1 = scf.if %0 -> (i32) { scf.yield %arg0 : i32 } else { %2 = arith.addi %arg0, %c1_i32 : i32 // CHECK: call @parent1 // CHECK: call @parent2 %3 = func.call @parent1(%2) : (i32) -> i32 %4 = func.call @parent2(%2) : (i32) -> i32 %5 = arith.addi %3, %4 : i32 scf.yield %5 : i32 } return %1 : i32 } }