xref: /llvm-project/polly/test/Simplify/exit_phi_accesses-2.ll (revision e1f056f692d869708c1898d9d65a69ac5584a0ed)
1; RUN: opt %loadNPMPolly '-passes=print<polly-function-scops>,scop(print<polly-simplify>)' -disable-output < %s | FileCheck %s
2;
3; The use of %sum.next by %phi counts as an escaping use.
4; Don't remove the scalar write of %sum.next.
5;
6target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
7
8define float @foo(ptr %A) {
9entry:
10  br label %header
11
12header:
13  fence seq_cst
14  br i1 true, label %body, label %exit
15
16body:
17  %i = phi i64 [ 0, %header ], [ %next, %body ]
18  %sum = phi float [ 0.0, %header ], [ %sum.next, %body ]
19  %arrayidx = getelementptr float, ptr %A, i64 %i
20  %next = add nuw nsw i64 %i, 1
21  %val = load float, ptr %arrayidx
22  %sum.next = fadd float %sum, %val
23  %cond = icmp ne i64 %i, 100
24  br i1 %cond, label %body, label %after
25
26after:
27  br label %exit
28
29exit:
30  %phi = phi float [%sum.next, %after], [0.0, %header]
31  ret float %phi
32}
33
34
35; CHECK: Statistics {
36; CHECK:     Dead accesses removed: 0
37; CHECK: }
38