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