llvm-capstone/polly/test/ScopInfo/non-affine-region-phi.ll
Tobias Grosser f4ee371e60 tests: Drop -polly-detect-unprofitable and -polly-no-early-exit
These flags are now always passed to all tests and need to be disabled if
not needed. Disabling these flags, rather than passing them to almost all
tests, significantly simplfies our RUN: lines.

llvm-svn: 249422
2015-10-06 15:36:44 +00:00

74 lines
2.3 KiB
LLVM

; RUN: opt %loadPolly -polly-allow-nonaffine -S < %s | FileCheck %s --check-prefix=CODE
; RUN: opt %loadPolly -polly-allow-nonaffine -polly-scops -analyze < %s | FileCheck %s
;
; Verify there is a phi in the non-affine region but it is not represented in
; the SCoP as all operands as well as the uses are inside the region too.
;
; void f(int *A) {
; for (int i = 0; i < 1024; i++) {
; if (A[i]) {
; int x = 0;
; if (i > 512)
; x = 1 + A[i];
; A[i] = x;
; }
; }
; }
;
; CODE-LABEL: bb11:
; CODE: %x.0 = phi i32
;
; We have 3 accesses to A that should be present in the SCoP but no scalar access.
;
; CHECK-NOT: [Scalar: 1]
; CHECK: [Scalar: 0]
; CHECK-NOT: [Scalar: 1]
; CHECK: [Scalar: 0]
; CHECK-NOT: [Scalar: 1]
; CHECK: [Scalar: 0]
; CHECK-NOT: [Scalar: 1]
;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
define void @f(i32* %A) {
bb:
br label %bb1
bb1: ; preds = %bb14, %bb
%indvars.iv = phi i64 [ %indvars.iv.next, %bb14 ], [ 0, %bb ]
%exitcond = icmp ne i64 %indvars.iv, 1024
br i1 %exitcond, label %bb2, label %bb15
bb2: ; preds = %bb1
%tmp = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
%tmp3 = load i32, i32* %tmp, align 4
%tmp4 = icmp eq i32 %tmp3, 0
br i1 %tmp4, label %bb13, label %bb5
bb5: ; preds = %bb2
%tmp6 = icmp sgt i64 %indvars.iv, 512
br i1 %tmp6, label %bb7, label %bb11
bb7: ; preds = %bb5
%tmp8 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
%tmp9 = load i32, i32* %tmp8, align 4
%tmp10 = add nsw i32 %tmp9, 1
br label %bb11
bb11: ; preds = %bb7, %bb5
%x.0 = phi i32 [ %tmp10, %bb7 ], [ 0, %bb5 ]
%tmp12 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
store i32 %x.0, i32* %tmp12, align 4
br label %bb13
bb13: ; preds = %bb2, %bb11
br label %bb14
bb14: ; preds = %bb13
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
br label %bb1
bb15: ; preds = %bb1
ret void
}