1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes 2; RUN: opt < %s -attributor -attributor-annotate-decl-cs -attributor-max-iterations=2 -S | FileCheck %s 3; RUN: opt < %s -attributor -attributor-annotate-decl-cs -attributor-max-iterations=3 -S | FileCheck %s 4; RUN: opt < %s -attributor -attributor-annotate-decl-cs -attributor-max-iterations=4 -S | FileCheck %s 5; RUN: opt < %s -attributor -attributor-annotate-decl-cs -attributor-max-iterations=2147483647 -S | FileCheck %s 6 7; CHECK-NOT: Function 8; CHECK: declare i32 @foo1() 9; CHECK-NOT: Function 10; CHECK: declare i32 @foo2() 11; CHECK-NOT: Function 12; CHECK: declare i32 @foo3() 13declare i32 @foo1() 14declare i32 @foo2() 15declare i32 @foo3() 16 17define internal i32 @bar() { 18; CHECK-LABEL: define {{[^@]+}}@bar() { 19; CHECK-NEXT: [[TMP1:%.*]] = call i32 @foo1() 20; CHECK-NEXT: [[TMP2:%.*]] = call i32 @foo2() 21; CHECK-NEXT: [[TMP3:%.*]] = call i32 @foo3() 22; CHECK-NEXT: ret i32 undef 23; 24 %1 = call i32 @foo1() 25 %2 = call i32 @foo2() 26 %3 = call i32 @foo3() 27 ret i32 1 28} 29 30define i32 @baz() { 31; CHECK-LABEL: define {{[^@]+}}@baz() { 32; CHECK-NEXT: [[TMP1:%.*]] = call i32 @bar() 33; CHECK-NEXT: ret i32 0 34; 35 %1 = call i32 @bar() 36 ret i32 0 37} 38 39; We should never derive anything here 40; CHECK-NOT: attributes 41