• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt %loadPolly -polly-detect -analyze < %s | FileCheck %s
2; RUN: opt %loadPolly -polly-codegen -verify-region-info -analyze < %s
3;
4; This is a scop directly precedented by a region, i.e. the scop's entry is the
5; region's exit block. This test is to ensure that the RegionInfo is correctly
6; preserved.
7;
8; CHECK: Valid Region for Scop: region2 => return
9;
10define void @f1(i64* %A, i64 %N) nounwind {
11entry:
12  br label %region1
13
14region1:
15  %indvar1 = phi i64 [ 0, %entry ], [ %indvar1.next, %region1 ]
16  fence seq_cst
17  %indvar1.next = add nsw i64 %indvar1, 1
18  %exitcond1 = icmp eq i64 %indvar1.next, %N
19  br i1 %exitcond1, label %region2, label %region1
20
21region2:
22  %indvar2 = phi i64 [ 0, %region1 ], [ %indvar2.next, %region2 ]
23  %scevgep2 = getelementptr i64, i64* %A, i64 %indvar2
24  store i64 %indvar2, i64* %scevgep2
25  %indvar2.next = add nsw i64 %indvar2, 1
26  %exitcond2 = icmp eq i64 %indvar2.next, %N
27  br i1 %exitcond2, label %return, label %region2
28
29return:
30  ret void
31}
32