| ; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s |
| ; |
| ; void foo(float *A, float *B, float *C, long N) { |
| ; for (long i = 0; i < N; i++) |
| ; C[i] = A[i] + B[i]; |
| ; } |
| ; |
| ; CHECK: Alias Groups (2): |
| ; |
| ; This test case verifies that we do not create run-time checks for two |
| ; read-only arrays. |
| target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" |
| |
| define void @foo(float* %A, float* %B, float* %C, i64 %N) { |
| entry: |
| br label %for.body |
| |
| for.body: |
| %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %for.body ] |
| %arrayidx.A = getelementptr float, float* %A, i64 %indvar |
| %arrayidx.B = getelementptr float, float* %B, i64 %indvar |
| %arrayidx.C = getelementptr float, float* %C, i64 %indvar |
| %val.A = load float, float* %arrayidx.A |
| %val.B = load float, float* %arrayidx.B |
| %add = fadd float %val.A, %val.B |
| store float %add, float* %arrayidx.C |
| %indvar.next = add nsw i64 %indvar, 1 |
| %exitcond = icmp ne i64 %indvar.next, %N |
| br i1 %exitcond, label %for.body, label %for.end |
| |
| for.end: |
| ret void |
| } |