forked from OSchip/llvm-project
46 lines
1.0 KiB
LLVM
46 lines
1.0 KiB
LLVM
; 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
|
|
}
|