1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --scrub-attributes
2; RUN: opt -S -passes='attributor' -aa-pipeline='basic-aa' -attributor-disable=false -attributor-max-iterations-verify -attributor-max-iterations=3 < %s | FileCheck %s
3
4define void @f() {
5; CHECK-LABEL: define {{[^@]+}}@f()
6; CHECK-NEXT:  entry:
7; CHECK-NEXT:    [[A:%.*]] = alloca i32, align 1
8; CHECK-NEXT:    [[TMP0:%.*]] = load i32, i32* [[A]], align 1
9; CHECK-NEXT:    call void @g(i32 [[TMP0]])
10; CHECK-NEXT:    ret void
11;
12entry:
13  %a = alloca i32, align 1
14  call void @g(i32* %a)
15  ret void
16}
17
18define internal void @g(i32* %a) {
19; CHECK-LABEL: define {{[^@]+}}@g
20; CHECK-SAME: (i32 [[TMP0:%.*]])
21; CHECK-NEXT:    [[A_PRIV:%.*]] = alloca i32
22; CHECK-NEXT:    store i32 [[TMP0]], i32* [[A_PRIV]]
23; CHECK-NEXT:    [[AA:%.*]] = load i32, i32* [[A_PRIV]], align 1
24; CHECK-NEXT:    call void @z(i32 [[AA]])
25; CHECK-NEXT:    ret void
26;
27  %aa = load i32, i32* %a, align 1
28  call void @z(i32 %aa)
29  ret void
30}
31
32declare void @z(i32)
33