• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt %loadPolly -polly-codegen -verify-dom-info -analyze < %s
2
3; Verify that the DominatorTree is preserved correctly for the inserted
4; %polly.stmt.exit.exit block, which serves as new exit block for the generated
5; subregion. In particulat, it must be dominated by %polly.stmt.subregion.enter,
6; the generated subregion's entry block.
7
8define void @func(i32 %n, i32* noalias nonnull %A) {
9entry:
10  br label %loop
11
12loop:
13  %i = phi i32 [0, %entry], [%i.inc, %loop.inc]
14  %i.cmp = icmp slt i32 %i, %n
15  br i1 %i.cmp, label %body, label %return
16
17body:
18  %skipcond = icmp slt i32 %i, 5
19  br i1 %skipcond, label %subregion.enter, label %subregion.skip
20
21subregion.skip:
22  br label %exit
23
24subregion.enter:
25  %sqr = mul i32 %i, %i
26  %cond = icmp eq i32 %sqr, 0
27  store i32 %i, i32* %A
28  br i1 %cond, label %subregion.true, label %subregion.false
29
30subregion.true:
31  br label %exit
32
33subregion.false:
34  br label %exit
35
36exit:
37  br label %loop.inc
38
39loop.inc:
40  %i.inc = add nuw nsw i32 %i, 1
41  br label %loop
42
43return:
44  ret void
45}
46