| ; RUN: opt %loadPolly -polly-codegen -verify-dom-info -analyze < %s |
| |
| ; Verify that the DominatorTree is preserved correctly for the inserted |
| ; %polly.stmt.exit.exit block, which serves as new exit block for the generated |
| ; subregion. In particulat, it must be dominated by %polly.stmt.subregion.enter, |
| ; the generated subregion's entry block. |
| |
| define void @func(i32 %n, i32* noalias nonnull %A) { |
| entry: |
| br label %loop |
| |
| loop: |
| %i = phi i32 [0, %entry], [%i.inc, %loop.inc] |
| %i.cmp = icmp slt i32 %i, %n |
| br i1 %i.cmp, label %body, label %return |
| |
| body: |
| %skipcond = icmp slt i32 %i, 5 |
| br i1 %skipcond, label %subregion.enter, label %subregion.skip |
| |
| subregion.skip: |
| br label %exit |
| |
| subregion.enter: |
| %sqr = mul i32 %i, %i |
| %cond = icmp eq i32 %sqr, 0 |
| store i32 %i, i32* %A |
| br i1 %cond, label %subregion.true, label %subregion.false |
| |
| subregion.true: |
| br label %exit |
| |
| subregion.false: |
| br label %exit |
| |
| exit: |
| br label %loop.inc |
| |
| loop.inc: |
| %i.inc = add nuw nsw i32 %i, 1 |
| br label %loop |
| |
| return: |
| ret void |
| } |