xref: /llvm-project/llvm/test/Transforms/PhaseOrdering/func-attrs.ll (revision 0d4a709bb876824a0afa5f86e138e8ffdcaf7661)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes
2; RUN: opt -O2 -S < %s | FileCheck %s
3
4declare void @g()
5
6define internal i32 @h1(i32 %a, i32 %b) {
7  %c = add i32 %a, %b
8  %c2 = add i32 2, %c
9  ret i32 %c2
10}
11
12define internal i32 @h2(i32 %a, i32 %b) {
13  %c = add i32 %a, %b
14  %c2 = add i32 2, %c
15  ret i32 %c2
16}
17
18define void @f(i32 %a, i32 %b) noinline {
19; CHECK: Function Attrs: mustprogress nofree noinline norecurse nosync nounwind willreturn memory(none)
20; CHECK-LABEL: @f(
21; CHECK-NEXT:  end:
22; CHECK-NEXT:    ret void
23;
24  %c = call i32 @h1(i32 %a, i32 %b)
25  %d = call i32 @h2(i32 %a, i32 %b)
26  %i = icmp eq i32 %c, %d
27  br i1 %i, label %end, label %dead
28dead:
29  call void @g()
30  br label %end
31end:
32  ret void
33}
34