diff options
-rw-r--r-- | polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll b/polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll index d5acb3362ff..f17cea42b65 100644 --- a/polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll +++ b/polly/test/ScopInfo/NonAffine/non_affine_region_guaranteed_non-entry.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadPolly -polly-detect -polly-scops -analyze < %s | FileCheck %s +; RUN: opt %loadPolly -polly-detect -polly-scops -analyze \ +; RUN: -polly-allow-nonaffine-loops < %s | FileCheck %s ; The BasicBlock "guaranteed" is always executed inside the non-affine subregion ; region_entry->region_exit. As such, writes accesses in blocks that always @@ -10,7 +11,7 @@ ; CHECK-NEXT: { Stmt_region_entry__TO__region_exit[i0] -> MemRef_A[0] }; ; CHECK-NOT: MayWriteAccess -define void @f(i32* %A, float %b) { +define void @f(i32* %A, i32* %B, i32* %C, float %b) { entry: br label %for.cond @@ -20,24 +21,29 @@ for.cond: br i1 %exitcond, label %region_entry, label %return region_entry: - %cond_entry = fcmp oeq float %b, 3.0 - br i1 %cond_entry, label %bb2, label %bb3 + br label %bb2 bb2: br label %guaranteed bb3: - br label %guaranteed + br label %bb3 guaranteed: + %ptr = getelementptr i32, i32* %B, i32 %indvar + %val = load i32, i32* %ptr + %cmp = icmp eq i32 %val, 0 store i32 0, i32* %A - br i1 %cond_entry, label %bb5, label %bb6 + br i1 %cmp, label %bb5, label %bb6 bb5: br label %region_exit bb6: - br i1 %cond_entry, label %region_exit, label %bb3 + %ptr2 = getelementptr i32, i32* %C, i32 %indvar + %val2 = load i32, i32* %ptr2 + %cmp2 = icmp eq i32 %val2, 0 + br i1 %cmp2, label %region_exit, label %region_entry region_exit: br label %for.inc |