Tobias Grosser | 575aca8 | 2015-10-06 16:10:29 +0000 | [diff] [blame] | 1 | ; RUN: opt %loadPolly -polly-process-unprofitable=false \ |
Tobias Grosser | 935f62c | 2015-10-06 15:19:35 +0000 | [diff] [blame] | 2 | ; RUN: -polly-detect -analyze < %s | FileCheck %s |
| 3 | |
Tobias Grosser | f4ee371 | 2015-10-06 15:36:44 +0000 | [diff] [blame] | 4 | ; RUN: opt %loadPolly -polly-allow-nonaffine-loops \ |
Tobias Grosser | 935f62c | 2015-10-06 15:19:35 +0000 | [diff] [blame] | 5 | ; RUN: -polly-detect -analyze < %s | FileCheck %s --check-prefix=NALOOPS |
| 6 | |
| 7 | ; RUN: opt %loadPolly -polly-allow-nonaffine-loops -polly-detect -analyze \ |
Tobias Grosser | 575aca8 | 2015-10-06 16:10:29 +0000 | [diff] [blame] | 8 | ; RUN: -polly-process-unprofitable=false < %s | \ |
Tobias Grosser | 935f62c | 2015-10-06 15:19:35 +0000 | [diff] [blame] | 9 | ; RUN: FileCheck %s --check-prefix=PROFIT |
Johannes Doerfert | 757a32b | 2015-10-04 14:54:27 +0000 | [diff] [blame] | 10 | |
| 11 | ; The latch conditions of the outer loop are not affine, thus the loop cannot |
| 12 | ; handled by the domain generation and needs to be overapproximated. |
| 13 | |
Johannes Doerfert | f61df69 | 2015-10-04 14:56:08 +0000 | [diff] [blame] | 14 | ; CHECK-NOT: Valid |
| 15 | ; NALOOPS: Valid Region for Scop: for.body.6 => for.end.45 |
| 16 | ; PROFIT-NOT: Valid |
Johannes Doerfert | 757a32b | 2015-10-04 14:54:27 +0000 | [diff] [blame] | 17 | |
| 18 | ; ModuleID = '/home/johannes/Downloads/bug.ll' |
| 19 | target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" |
| 20 | |
| 21 | ; Function Attrs: nounwind uwtable |
| 22 | define void @kernel_reg_detect([6 x i32]* %path) #0 { |
| 23 | entry: |
| 24 | br label %for.body.6 |
| 25 | |
| 26 | for.body.6: ; preds = %for.inc.43, %for.body.6, %entry |
| 27 | %indvars.iv9 = phi i64 [ %indvars.iv.next10, %for.body.6 ], [ 0, %for.inc.43 ], [ 0, %entry ] |
| 28 | %indvars.iv.next10 = add nuw nsw i64 %indvars.iv9, 1 |
| 29 | %lftr.wideiv = trunc i64 %indvars.iv.next10 to i32 |
| 30 | %exitcond = icmp ne i32 %lftr.wideiv, 6 |
| 31 | br i1 %exitcond, label %for.body.6, label %for.inc.40 |
| 32 | |
| 33 | for.inc.40: ; preds = %for.inc.40, %for.body.6 |
| 34 | %arrayidx28 = getelementptr inbounds [6 x i32], [6 x i32]* %path, i64 0, i64 0 |
| 35 | %tmp = load i32, i32* %arrayidx28, align 4 |
| 36 | %arrayidx36 = getelementptr inbounds [6 x i32], [6 x i32]* %path, i64 0, i64 0 |
| 37 | store i32 0, i32* %arrayidx36, align 4 |
| 38 | %exitcond22 = icmp ne i64 0, 6 |
| 39 | br i1 %exitcond22, label %for.inc.40, label %for.inc.43 |
| 40 | |
| 41 | for.inc.43: ; preds = %for.inc.40 |
| 42 | %exitcond23 = icmp ne i32 0, 10000 |
| 43 | br i1 %exitcond23, label %for.body.6, label %for.end.45 |
| 44 | |
| 45 | for.end.45: ; preds = %for.inc.43 |
| 46 | ret void |
| 47 | } |