blob: 81507111c7aa50c49a9bafe1efbfc0e63351eda2 [file] [log] [blame]
// RUN: iree-tf-opt -split-input-file -verify-diagnostics -iree-guarantee-all-funcs-one-use <%s | IreeFileCheck %s
// -----
// Basic test.
// CHECK-LABEL: func @f
func @f() {
// CHECK: call @g() : () -> ()
// CHECK: call @[[NEWG:.+]]() : () -> ()
call @g() : () -> ()
call @g() : () -> ()
return
}
// CHECK: func @g()
// CHECK: func @[[NEWG]]() attributes {sym_visibility = "private"}
func @g() {
return
}
// -----
// Transitive callees.
// CHECK-LABEL: func @f
// 2 copies of @g
// CHECK-DAG: func @g{{.*}}
// CHECK-DAG: func @g{{.*}}
// 4 copies of @h
// CHECK-DAG: func @h{{.*}}
// CHECK-DAG: func @h{{.*}}
// CHECK-DAG: func @h{{.*}}
// CHECK-DAG: func @h{{.*}}
func @f() {
call @g() : () -> ()
call @g() : () -> ()
return
}
func @g() {
call @h() : () -> ()
call @h() : () -> ()
return
}
func @h() {
return
}
// -----
// Handle error case of infinite recursion.
// expected-error @+1 {{reached cloning limit}}
func @f() attributes {sym_visibility = "private"} {
call @f() : () -> ()
call @f() : () -> ()
return
}