aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Grosser <grosser@fim.uni-passau.de>2012-12-20 20:18:50 +0000
committerTobias Grosser <grosser@fim.uni-passau.de>2012-12-20 20:18:50 +0000
commit047be171539ffe5029c6d56bd4b565b4129b8d4c (patch)
treee33141c9316355c54e11d1330f8bf162753215d7
parentc3960e42106e7b8c6f14bc324cef763df45f7f26 (diff)
downloadllvm-047be171539ffe5029c6d56bd4b565b4129b8d4c.zip
llvm-047be171539ffe5029c6d56bd4b565b4129b8d4c.tar.gz
llvm-047be171539ffe5029c6d56bd4b565b4129b8d4c.tar.bz2
adapt cloog codegen testcases to isl
Merged from: https://llvm.org/svn/llvm-project/polly/trunk@169161 llvm-svn: 170750
-rw-r--r--polly/test/Isl/CodeGen/20100617.ll19
-rw-r--r--polly/test/Isl/CodeGen/20100622.ll43
-rw-r--r--polly/test/Isl/CodeGen/20100707.ll27
-rw-r--r--polly/test/Isl/CodeGen/20100707_2.ll115
-rw-r--r--polly/test/Isl/CodeGen/20100708_2.ll28
-rw-r--r--polly/test/Isl/CodeGen/20100713.ll34
-rw-r--r--polly/test/Isl/CodeGen/20100713_2.ll34
-rw-r--r--polly/test/Isl/CodeGen/20100717.ll39
-rw-r--r--polly/test/Isl/CodeGen/20100718-DomInfo-2.ll35
-rw-r--r--polly/test/Isl/CodeGen/20100718-DomInfo.ll28
-rw-r--r--polly/test/Isl/CodeGen/20100720-MultipleConditions.ll96
-rw-r--r--polly/test/Isl/CodeGen/20100809-IndependentBlock.ll31
-rw-r--r--polly/test/Isl/CodeGen/20100811-ScalarDependencyBetweenBrAndCnd.ll30
-rw-r--r--polly/test/Isl/CodeGen/20101030-Overflow.ll22
-rw-r--r--polly/test/Isl/CodeGen/20101103-Overflow3.ll24
-rw-r--r--polly/test/Isl/CodeGen/20101103-signmissmatch.ll38
-rw-r--r--polly/test/Isl/CodeGen/20110226-Ignore-Dead-Code.ll59
-rw-r--r--polly/test/Isl/CodeGen/20110226-PHI-Node-removed.ll29
-rw-r--r--polly/test/Isl/CodeGen/PHIInExit.ll76
-rw-r--r--polly/test/Isl/CodeGen/constant_condition.ll56
-rw-r--r--polly/test/Isl/CodeGen/loop_with_condition.ll175
-rw-r--r--polly/test/Isl/CodeGen/loop_with_condition_2.ll137
-rw-r--r--polly/test/Isl/CodeGen/loop_with_condition_ineq.ll177
-rw-r--r--polly/test/Isl/CodeGen/loop_with_condition_nested.ll211
-rw-r--r--polly/test/Isl/CodeGen/reduction_2.ll93
-rw-r--r--polly/test/Isl/CodeGen/sequential_loops.ll138
-rw-r--r--polly/test/Isl/CodeGen/simple_nonaffine_loop.ll59
-rw-r--r--polly/test/Isl/CodeGen/single_do_loop_int_max_iterations.ll93
-rw-r--r--polly/test/Isl/CodeGen/single_do_loop_ll_max_iterations.ll69
-rw-r--r--polly/test/Isl/CodeGen/single_do_loop_scev_replace.ll95
-rw-r--r--polly/test/Isl/CodeGen/single_loop.ll85
-rw-r--r--polly/test/Isl/CodeGen/single_loop_int_max_iterations.ll72
-rw-r--r--polly/test/Isl/CodeGen/single_loop_ll_max_iterations.ll72
-rw-r--r--polly/test/Isl/CodeGen/single_loop_one_iteration.ll69
-rw-r--r--polly/test/Isl/CodeGen/single_loop_param.ll71
-rw-r--r--polly/test/Isl/CodeGen/single_loop_zero_iterations.ll70
-rw-r--r--polly/test/Isl/CodeGen/split_edges.ll34
-rw-r--r--polly/test/Isl/CodeGen/split_edges_2.ll33
-rw-r--r--polly/test/Isl/single_loop_param_less_equal.ll (renamed from polly/test/IslCodeGen/single_loop_param_less_equal.ll)0
-rw-r--r--polly/test/Isl/single_loop_param_less_than.ll (renamed from polly/test/IslCodeGen/single_loop_param_less_than.ll)0
40 files changed, 2616 insertions, 0 deletions
diff --git a/polly/test/Isl/CodeGen/20100617.ll b/polly/test/Isl/CodeGen/20100617.ll
new file mode 100644
index 0000000..398e620
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100617.ll
@@ -0,0 +1,19 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @init_array() nounwind {
+entry:
+ br label %for.cond
+
+for.cond: ; preds = %for.cond1, %entry
+ %indvar1 = phi i64 [ %indvar.next2, %for.cond1 ], [ 0, %entry ] ; <i64> [#uses=1]
+ br i1 false, label %for.cond1, label %for.end32
+
+for.cond1: ; preds = %for.cond
+ %indvar.next2 = add i64 %indvar1, 1 ; <i64> [#uses=1]
+ br label %for.cond
+
+for.end32: ; preds = %for.cond
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20100622.ll b/polly/test/Isl/CodeGen/20100622.ll
new file mode 100644
index 0000000..02c6775
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100622.ll
@@ -0,0 +1,43 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+; RUN: opt %loadPolly %defaultOpts -polly-detect -analyze < %s | not FileCheck %s
+
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
+target triple = "i386-portbld-freebsd8.0"
+
+define void @MAIN__() nounwind {
+entry:
+ br i1 undef, label %bb6.preheader, label %bb3
+
+bb3: ; preds = %bb3, %entry
+ br i1 undef, label %bb6.preheader, label %bb3
+
+bb6.preheader: ; preds = %bb3, %entry
+ br i1 undef, label %bb11, label %bb9.preheader
+
+bb9.preheader: ; preds = %bb6.preheader
+ br label %bb11
+
+bb11: ; preds = %bb9.preheader, %bb6.preheader
+ br label %bb15
+
+bb15: ; preds = %bb15, %bb11
+ br i1 undef, label %bb26.loopexit, label %bb15
+
+bb26.loopexit: ; preds = %bb15
+ br i1 undef, label %bb31, label %bb29.preheader
+
+bb29.preheader: ; preds = %bb26.loopexit
+ br label %bb29
+
+bb29: ; preds = %bb29, %bb29.preheader
+ %indvar47 = phi i32 [ 0, %bb29.preheader ], [ %indvar.next48, %bb29 ] ; <i32> [#uses=1]
+ %indvar.next48 = add i32 %indvar47, 1 ; <i32> [#uses=2]
+ %exitcond50 = icmp eq i32 %indvar.next48, undef ; <i1> [#uses=1]
+ br i1 %exitcond50, label %bb31, label %bb29
+
+bb31: ; preds = %bb29, %bb26.loopexit
+ %errtot.3 = phi float [ undef, %bb26.loopexit ], [ undef, %bb29 ] ; <float> [#uses=0]
+ ret void
+}
+
+; CHECK: SCOP:
diff --git a/polly/test/Isl/CodeGen/20100707.ll b/polly/test/Isl/CodeGen/20100707.ll
new file mode 100644
index 0000000..a19d636
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100707.ll
@@ -0,0 +1,27 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @clause_SetSplitField(i32 %Length) nounwind inlinehint {
+entry:
+ br i1 undef, label %bb1, label %bb6
+
+bb1: ; preds = %entry
+ unreachable
+
+bb6: ; preds = %entry
+ %tmp = zext i32 %Length to i64 ; <i64> [#uses=1]
+ br label %bb8
+
+bb7: ; preds = %bb8
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb6
+ %indvar = phi i64 [ %indvar.next, %bb7 ], [ 0, %bb6 ] ; <i64> [#uses=2]
+ %exitcond = icmp ne i64 %indvar, %tmp ; <i1> [#uses=1]
+ br i1 %exitcond, label %bb7, label %return
+
+return: ; preds = %bb8
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20100707_2.ll b/polly/test/Isl/CodeGen/20100707_2.ll
new file mode 100644
index 0000000..ae46eb2
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100707_2.ll
@@ -0,0 +1,115 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+@win193 = external global [4 x [36 x double]], align 32 ; <[4 x [36 x double]]*> [#uses=3]
+@sb_sample = external global [2 x [2 x [18 x [32 x double]]]], align 32 ; <[2 x [2 x [18 x [32 x double]]]]*> [#uses=2]
+
+define void @mdct_sub48() nounwind {
+entry:
+ br i1 undef, label %bb, label %bb54
+
+bb: ; preds = %entry
+ br label %bb54
+
+bb3: ; preds = %bb50
+ br label %bb8
+
+bb4: ; preds = %bb8
+ br label %bb8
+
+bb8: ; preds = %bb4, %bb3
+ br i1 undef, label %bb4, label %bb9
+
+bb9: ; preds = %bb8
+ br label %bb48
+
+bb25: ; preds = %bb48
+ br i1 false, label %bb26, label %bb27
+
+bb26: ; preds = %bb48, %bb25
+ br label %bb37
+
+bb27: ; preds = %bb25
+ br i1 undef, label %bb32, label %bb35
+
+bb32: ; preds = %bb27
+ br label %bb37
+
+bb34: ; preds = %bb35
+ %0 = getelementptr inbounds [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0]
+ %1 = getelementptr inbounds [18 x [32 x double]]* undef, i64 0, i64 0 ; <[32 x double]*> [#uses=1]
+ %2 = getelementptr inbounds [32 x double]* %1, i64 0, i64 0 ; <double*> [#uses=0]
+ %3 = getelementptr inbounds [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0]
+ %4 = sub nsw i32 17, %k.4 ; <i32> [#uses=1]
+ %5 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1]
+ %6 = getelementptr inbounds [2 x [18 x [32 x double]]]* %5, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1]
+ %7 = sext i32 %4 to i64 ; <i64> [#uses=1]
+ %8 = getelementptr inbounds [18 x [32 x double]]* %6, i64 0, i64 %7 ; <[32 x double]*> [#uses=1]
+ %9 = getelementptr inbounds [32 x double]* %8, i64 0, i64 0 ; <double*> [#uses=1]
+ %10 = load double* %9, align 8 ; <double> [#uses=0]
+ %11 = fsub double 0.000000e+00, undef ; <double> [#uses=1]
+ %12 = getelementptr inbounds double* getelementptr inbounds ([4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 0 ; <double*> [#uses=1]
+ store double %11, double* %12, align 8
+ %13 = add nsw i32 %k.4, 9 ; <i32> [#uses=1]
+ %14 = add nsw i32 %k.4, 18 ; <i32> [#uses=1]
+ %15 = getelementptr inbounds [4 x [36 x double]]* @win193, i64 0, i64 0 ; <[36 x double]*> [#uses=1]
+ %16 = sext i32 %14 to i64 ; <i64> [#uses=1]
+ %17 = getelementptr inbounds [36 x double]* %15, i64 0, i64 %16 ; <double*> [#uses=1]
+ %18 = load double* %17, align 8 ; <double> [#uses=0]
+ %19 = sext i32 %k.4 to i64 ; <i64> [#uses=1]
+ %20 = getelementptr inbounds [18 x [32 x double]]* undef, i64 0, i64 %19 ; <[32 x double]*> [#uses=1]
+ %21 = sext i32 %band.2 to i64 ; <i64> [#uses=1]
+ %22 = getelementptr inbounds [32 x double]* %20, i64 0, i64 %21 ; <double*> [#uses=1]
+ %23 = load double* %22, align 8 ; <double> [#uses=0]
+ %24 = sext i32 %39 to i64 ; <i64> [#uses=1]
+ %25 = getelementptr inbounds [4 x [36 x double]]* @win193, i64 0, i64 %24 ; <[36 x double]*> [#uses=1]
+ %26 = getelementptr inbounds [36 x double]* %25, i64 0, i64 0 ; <double*> [#uses=1]
+ %27 = load double* %26, align 8 ; <double> [#uses=0]
+ %28 = sub nsw i32 17, %k.4 ; <i32> [#uses=1]
+ %29 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1]
+ %30 = getelementptr inbounds [2 x [18 x [32 x double]]]* %29, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1]
+ %31 = sext i32 %28 to i64 ; <i64> [#uses=1]
+ %32 = getelementptr inbounds [18 x [32 x double]]* %30, i64 0, i64 %31 ; <[32 x double]*> [#uses=1]
+ %33 = getelementptr inbounds [32 x double]* %32, i64 0, i64 0 ; <double*> [#uses=1]
+ %34 = load double* %33, align 8 ; <double> [#uses=0]
+ %35 = sext i32 %13 to i64 ; <i64> [#uses=1]
+ %36 = getelementptr inbounds double* getelementptr inbounds ([4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 %35 ; <double*> [#uses=1]
+ store double 0.000000e+00, double* %36, align 8
+ %37 = sub nsw i32 %k.4, 1 ; <i32> [#uses=1]
+ br label %bb35
+
+bb35: ; preds = %bb34, %bb27
+ %k.4 = phi i32 [ %37, %bb34 ], [ 8, %bb27 ] ; <i32> [#uses=6]
+ br i1 undef, label %bb34, label %bb36
+
+bb36: ; preds = %bb35
+ unreachable
+
+bb37: ; preds = %bb32, %bb26
+ %38 = add nsw i32 %band.2, 1 ; <i32> [#uses=1]
+ br label %bb48
+
+bb48: ; preds = %bb37, %bb9
+ %band.2 = phi i32 [ %38, %bb37 ], [ 0, %bb9 ] ; <i32> [#uses=2]
+ %39 = load i32* null, align 8 ; <i32> [#uses=1]
+ br i1 undef, label %bb26, label %bb25
+
+bb50: ; preds = %bb54
+ br i1 undef, label %bb3, label %bb51
+
+bb51: ; preds = %bb50
+ br i1 undef, label %bb52, label %bb53
+
+bb52: ; preds = %bb51
+ unreachable
+
+bb53: ; preds = %bb51
+ br label %bb54
+
+bb54: ; preds = %bb53, %bb, %entry
+ br i1 undef, label %bb50, label %return
+
+return: ; preds = %bb54
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20100708_2.ll b/polly/test/Isl/CodeGen/20100708_2.ll
new file mode 100644
index 0000000..01a2ad7
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100708_2.ll
@@ -0,0 +1,28 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-pc-linux-gnu"
+
+define void @init_array() nounwind {
+bb:
+ br label %bb1
+
+bb1: ; preds = %bb4, %bb
+ br i1 undef, label %bb2, label %bb5
+
+bb2: ; preds = %bb3, %bb1
+ %indvar = phi i64 [ %indvar.next, %bb3 ], [ 0, %bb1 ] ; <i64> [#uses=1]
+ %tmp3 = trunc i64 undef to i32 ; <i32> [#uses=1]
+ br i1 false, label %bb3, label %bb4
+
+bb3: ; preds = %bb2
+ %tmp = srem i32 %tmp3, 1024 ; <i32> [#uses=0]
+ store double undef, double* undef
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %bb2
+
+bb4: ; preds = %bb2
+ br label %bb1
+
+bb5: ; preds = %bb1
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20100713.ll b/polly/test/Isl/CodeGen/20100713.ll
new file mode 100644
index 0000000..cb3cdd4
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100713.ll
@@ -0,0 +1,34 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @fft_float(i32 %NumSamples) nounwind {
+ br label %bb18
+
+bb18: ; preds = %bb17
+ br i1 false, label %bb19, label %bb22
+
+bb19: ; preds = %bb18
+ %a = uitofp i32 %NumSamples to double ; <double> [#uses=1]
+ br label %bb21
+
+bb20: ; preds = %bb21
+ %1 = load float* undef, align 4 ; <float> [#uses=0]
+ %2 = fpext float undef to double ; <double> [#uses=1]
+ %3 = fdiv double %2, %a ; <double> [#uses=0]
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %bb21
+
+bb21: ; preds = %bb20, %bb19
+ %indvar = phi i64 [ %indvar.next, %bb20 ], [ 0, %bb19 ] ; <i64> [#uses=1]
+ br i1 false, label %bb20, label %bb22.loopexit
+
+bb22.loopexit: ; preds = %bb21
+ br label %bb22
+
+bb22: ; preds = %bb22.loopexit, %bb18
+ br label %return
+
+return: ; preds = %bb22
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20100713_2.ll b/polly/test/Isl/CodeGen/20100713_2.ll
new file mode 100644
index 0000000..ba81cee
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100713_2.ll
@@ -0,0 +1,34 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define hidden void @luaD_callhook() nounwind {
+entry:
+ br i1 undef, label %bb, label %return
+
+bb: ; preds = %entry
+ br i1 undef, label %bb1, label %return
+
+bb1: ; preds = %bb
+ %0 = sub nsw i64 undef, undef ; <i64> [#uses=1]
+ br i1 false, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ br label %bb4
+
+bb3: ; preds = %bb1
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ br i1 undef, label %bb5, label %bb6
+
+bb5: ; preds = %bb4
+ unreachable
+
+bb6: ; preds = %bb4
+ %1 = getelementptr inbounds i8* undef, i64 %0 ; <i8*> [#uses=0]
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20100717.ll b/polly/test/Isl/CodeGen/20100717.ll
new file mode 100644
index 0000000..acadbbc
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100717.ll
@@ -0,0 +1,39 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl -disable-output %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @matrixTranspose(double** %A) nounwind {
+entry:
+ br label %bb4
+
+bb: ; preds = %bb4
+ %0 = add nsw i32 %i.0, 1 ; <i32> [#uses=1]
+ br label %bb2
+
+bb1: ; preds = %bb2
+ %1 = getelementptr inbounds double** %A, i64 0 ; <double**> [#uses=0]
+ %2 = getelementptr inbounds double** %A, i64 0 ; <double**> [#uses=0]
+ %3 = getelementptr inbounds double** %A, i64 0 ; <double**> [#uses=0]
+ %4 = sext i32 %j.0 to i64 ; <i64> [#uses=1]
+ %5 = getelementptr inbounds double** %A, i64 %4 ; <double**> [#uses=1]
+ %6 = load double** %5, align 8 ; <double*> [#uses=0]
+ %7 = add nsw i32 %j.0, 1 ; <i32> [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %j.0 = phi i32 [ %0, %bb ], [ %7, %bb1 ] ; <i32> [#uses=3]
+ %8 = icmp sle i32 %j.0, 50 ; <i1> [#uses=1]
+ br i1 %8, label %bb1, label %bb3
+
+bb3: ; preds = %bb2
+ %9 = add nsw i32 %i.0, 1 ; <i32> [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb3, %entry
+ %i.0 = phi i32 [ 0, %entry ], [ %9, %bb3 ] ; <i32> [#uses=3]
+ %10 = icmp sle i32 %i.0, 50 ; <i1> [#uses=1]
+ br i1 %10, label %bb, label %return
+
+return: ; preds = %bb4
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20100718-DomInfo-2.ll b/polly/test/Isl/CodeGen/20100718-DomInfo-2.ll
new file mode 100644
index 0000000..b5b1afa
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100718-DomInfo-2.ll
@@ -0,0 +1,35 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl -verify-dom-info -disable-output < %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @getNonAffNeighbour() nounwind {
+entry:
+ br i1 undef, label %bb, label %bb6
+
+bb: ; preds = %entry
+ br i1 false, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ br label %bb16
+
+bb2: ; preds = %bb
+ br i1 false, label %bb3, label %bb4
+
+bb3: ; preds = %bb2
+ br label %bb16
+
+bb4: ; preds = %bb2
+ br label %bb16
+
+bb6: ; preds = %entry
+ br i1 false, label %bb7, label %bb9
+
+bb7: ; preds = %bb6
+ br label %bb16
+
+bb9: ; preds = %bb6
+ br label %bb16
+
+bb16: ; preds = %bb9, %bb7, %bb4, %bb3, %bb1
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20100718-DomInfo.ll b/polly/test/Isl/CodeGen/20100718-DomInfo.ll
new file mode 100644
index 0000000..d0daa2c
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100718-DomInfo.ll
@@ -0,0 +1,28 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl -verify-dom-info -disable-output < %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @intrapred_luma_16x16(i32 %predmode) nounwind {
+entry:
+ switch i32 %predmode, label %bb81 [
+ i32 0, label %bb25
+ i32 1, label %bb26
+ ]
+
+bb23: ; preds = %bb25
+ %indvar.next95 = add i64 %indvar94, 1 ; <i64> [#uses=1]
+ br label %bb25
+
+bb25: ; preds = %bb23, %entry
+ %indvar94 = phi i64 [ %indvar.next95, %bb23 ], [ 0, %entry ] ; <i64> [#uses=1]
+ br i1 false, label %bb23, label %return
+
+bb26: ; preds = %entry
+ ret void
+
+bb81: ; preds = %entry
+ ret void
+
+return: ; preds = %bb25
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20100720-MultipleConditions.ll b/polly/test/Isl/CodeGen/20100720-MultipleConditions.ll
new file mode 100644
index 0000000..6424719
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100720-MultipleConditions.ll
@@ -0,0 +1,96 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze %s
+
+;int bar1();
+;int bar2();
+;int bar3();
+;int k;
+;#define N 100
+;int A[N];
+;
+;int main() {
+; int i, j, z;
+;
+; __sync_synchronize();
+; for (i = 0; i < N; i++) {
+; if (i < 50)
+; A[i] = 8;
+; if (i < 4)
+; A[i] = 9;
+; if (i < 3)
+; A[i] = 10;
+; }
+; __sync_synchronize();
+;
+; return A[z];
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-pc-linux-gnu"
+
+@A = common global [100 x i32] zeroinitializer, align 16 ; <[100 x i32]*> [#uses=2]
+@k = common global i32 0, align 4 ; <i32*> [#uses=0]
+
+define i32 @main() nounwind {
+; <label>:0
+ fence seq_cst
+ br label %1
+
+; <label>:1 ; preds = %12, %0
+ %indvar = phi i64 [ %indvar.next, %12 ], [ 0, %0 ] ; <i64> [#uses=4]
+ %scevgep = getelementptr [100 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=3]
+ %i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=3]
+ %exitcond = icmp ne i64 %indvar, 100 ; <i1> [#uses=1]
+ br i1 %exitcond, label %2, label %13
+
+; <label>:2 ; preds = %1
+ %3 = icmp slt i32 %i.0, 50 ; <i1> [#uses=1]
+ br i1 %3, label %4, label %5
+
+; <label>:4 ; preds = %2
+ store i32 8, i32* %scevgep
+ br label %5
+
+; <label>:5 ; preds = %4, %2
+ %6 = icmp slt i32 %i.0, 4 ; <i1> [#uses=1]
+ br i1 %6, label %7, label %8
+
+; <label>:7 ; preds = %5
+ store i32 9, i32* %scevgep
+ br label %8
+
+; <label>:8 ; preds = %7, %5
+ %9 = icmp slt i32 %i.0, 3 ; <i1> [#uses=1]
+ br i1 %9, label %10, label %11
+
+; <label>:10 ; preds = %8
+ store i32 10, i32* %scevgep
+ br label %11
+
+; <label>:11 ; preds = %10, %8
+ br label %12
+
+; <label>:12 ; preds = %11
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %1
+
+; <label>:13 ; preds = %1
+ fence seq_cst
+ %14 = sext i32 undef to i64 ; <i64> [#uses=1]
+ %15 = getelementptr inbounds i32* getelementptr inbounds ([100 x i32]* @A, i32 0, i32 0), i64 %14 ; <i32*> [#uses=1]
+ %16 = load i32* %15 ; <i32> [#uses=1]
+ ret i32 %16
+}
+
+; CHECK: for (c2=0;c2<=2;c2++) {
+; CHECK: S0(c2);
+; CHECK: S1(c2);
+; CHECK: S2(c2);
+; CHECK: }
+; CHECK: S0(3);
+; CHECK: S1(3);
+; CHECK: for (c2=4;c2<=49;c2++) {
+; CHECK: S0(c2);
+; CHECK: }
+; CHECK: S0: Stmt_4
+; CHECK: S1: Stmt_7
+; CHECK: S2: Stmt_10
diff --git a/polly/test/Isl/CodeGen/20100809-IndependentBlock.ll b/polly/test/Isl/CodeGen/20100809-IndependentBlock.ll
new file mode 100644
index 0000000..df64aa0
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100809-IndependentBlock.ll
@@ -0,0 +1,31 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl -disable-output %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+define void @cfft2([2 x float]* %x) nounwind {
+entry:
+ %d.1.reg2mem = alloca [2 x float]* ; <[2 x float]**> [#uses=3]
+ br i1 undef, label %bb2, label %bb34
+
+bb2: ; preds = %bb34, %entry
+ ret void
+
+bb20: ; preds = %bb34
+ store [2 x float]* undef, [2 x float]** %d.1.reg2mem
+ br i1 false, label %bb21, label %bb23
+
+bb21: ; preds = %bb20
+ %0 = getelementptr inbounds [2 x float]* %x, i64 undef ; <[2 x float]*> [#uses=1]
+ store [2 x float]* %0, [2 x float]** %d.1.reg2mem
+ br label %bb23
+
+bb23: ; preds = %bb21, %bb20
+ %d.1.reload = load [2 x float]** %d.1.reg2mem ; <[2 x float]*> [#uses=1]
+ br i1 undef, label %bb29, label %bb34
+
+bb29: ; preds = %bb23
+ %1 = getelementptr inbounds [2 x float]* %d.1.reload, i64 undef ; <[2 x float]*> [#uses=0]
+ br label %bb34
+
+bb34: ; preds = %bb29, %bb23, %entry
+ br i1 undef, label %bb20, label %bb2
+}
diff --git a/polly/test/Isl/CodeGen/20100811-ScalarDependencyBetweenBrAndCnd.ll b/polly/test/Isl/CodeGen/20100811-ScalarDependencyBetweenBrAndCnd.ll
new file mode 100644
index 0000000..e6250fd
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20100811-ScalarDependencyBetweenBrAndCnd.ll
@@ -0,0 +1,30 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl -disable-output %s
+target datalayout =
+"e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @main() nounwind {
+entry:
+ br label %for.cond
+
+for.cond: ; preds = %for.inc, %entry
+ %indvar1 = phi i64 [ %indvar.next2, %for.inc ], [ 0, %entry ] ; <i64> [#uses=2]
+ %exitcond = icmp ne i64 %indvar1, 1024 ; <i1> [#uses=1]
+ br label %a
+
+a: ; preds = %for.cond
+ br i1 %exitcond, label %for.body, label %for.end
+
+for.body: ; preds = %a
+ br label %for.inc
+
+for.inc: ; preds = %for.body
+ %indvar.next2 = add i64 %indvar1, 1 ; <i64> [#uses=1]
+ br label %for.cond
+
+for.end: ; preds = %a
+ br label %for.cond5
+
+for.cond5: ; preds = %for.inc17, %for.end
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20101030-Overflow.ll b/polly/test/Isl/CodeGen/20101030-Overflow.ll
new file mode 100644
index 0000000..540c2c1
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20101030-Overflow.ll
@@ -0,0 +1,22 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @compdecomp() nounwind {
+entry:
+ %max = alloca i64
+ %i = load i64* undef
+ br label %bb37
+
+bb37: ; preds = %bb36, %bb28
+ %tmp = icmp ugt i64 %i, 0
+ br i1 %tmp, label %bb38, label %bb39
+
+bb38: ; preds = %bb37
+ store i64 %i, i64* %max
+ br label %bb39
+
+bb39: ; preds = %bb38, %bb37
+ unreachable
+
+}
diff --git a/polly/test/Isl/CodeGen/20101103-Overflow3.ll b/polly/test/Isl/CodeGen/20101103-Overflow3.ll
new file mode 100644
index 0000000..cc6bb66
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20101103-Overflow3.ll
@@ -0,0 +1,24 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+define void @Reflection_coefficients(i16* %r) nounwind {
+bb20:
+ %indvar3.lcssa20.reload = load i64* undef
+ %tmp = mul i64 %indvar3.lcssa20.reload, -1
+ %tmp5 = add i64 %tmp, 8
+ br label %bb22
+
+bb21: ; preds = %bb22
+ %r_addr.1.moved.to.bb21 = getelementptr i16* %r, i64 0
+ store i16 0, i16* %r_addr.1.moved.to.bb21, align 2
+ %indvar.next = add i64 %indvar, 1
+ br label %bb22
+
+bb22: ; preds = %bb21, %bb20
+ %indvar = phi i64 [ %indvar.next, %bb21 ], [ 0, %bb20 ]
+ %exitcond = icmp ne i64 %indvar, %tmp5
+ br i1 %exitcond, label %bb21, label %return
+
+return: ; preds = %bb22
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20101103-signmissmatch.ll b/polly/test/Isl/CodeGen/20101103-signmissmatch.ll
new file mode 100644
index 0000000..50636cf
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20101103-signmissmatch.ll
@@ -0,0 +1,38 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-pc-linux-gnu"
+
+define void @CleanNet() nounwind {
+entry:
+ %firstVia.0.reg2mem = alloca i64
+ br label %bb7
+
+bb7: ; preds = %bb7, %entry
+ br i1 undef, label %bb7, label %bb8
+
+bb8: ; preds = %bb7
+ %indvar5.lcssa.reload = load i64* undef
+ %tmp17 = mul i64 %indvar5.lcssa.reload, -1
+ %tmp18 = add i64 0, %tmp17
+ br label %bb18
+
+bb13: ; preds = %bb18
+ %0 = icmp ult i64 %i.1, 0
+ br i1 %0, label %bb14, label %bb17
+
+bb14: ; preds = %bb13
+ store i64 %i.1, i64* %firstVia.0.reg2mem
+ br label %bb17
+
+bb17: ; preds = %bb14, %bb13
+ %indvar.next16 = add i64 %indvar15, 1
+ br label %bb18
+
+bb18: ; preds = %bb17, %bb8
+ %indvar15 = phi i64 [ %indvar.next16, %bb17 ], [ 0, %bb8 ]
+ %i.1 = add i64 %tmp18, %indvar15
+ br i1 undef, label %bb13, label %bb25
+
+bb25: ; preds = %bb18
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20110226-Ignore-Dead-Code.ll b/polly/test/Isl/CodeGen/20110226-Ignore-Dead-Code.ll
new file mode 100644
index 0000000..67b2e6f
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20110226-Ignore-Dead-Code.ll
@@ -0,0 +1,59 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @main() nounwind {
+.split:
+ br label %0
+
+.loopexit.loopexit: ; preds = %.preheader.us
+ br label %.loopexit.simregexit
+
+.loopexit.simregexit: ; preds = %.loopexit.loopexit, %._crit_edge
+ br label %.loopexit
+
+.loopexit: ; preds = %.loopexit.simregexit
+ %indvar.next16 = add i64 %indvar15, 1
+ %exitcond53 = icmp eq i64 %indvar.next16, 2048
+ br i1 %exitcond53, label %2, label %0
+
+; <label>:0 ; preds = %.loopexit, %.split
+ %indvar15 = phi i64 [ 0, %.split ], [ %indvar.next16, %.loopexit ]
+ br label %.simregentry
+
+.simregentry: ; preds = %0
+ %indvar15.ph = phi i64 [ %indvar15, %0 ]
+ %tmp67 = add i64 %indvar15, 1
+ %i.06 = trunc i64 %tmp67 to i32
+ %tmp25 = add i64 undef, 1
+ %1 = icmp slt i32 %i.06, 2048
+ br i1 %1, label %.lr.ph.preheader, label %._crit_edge.simregexit
+
+.lr.ph.preheader: ; preds = %.simregentry
+ br label %.lr.ph
+
+.lr.ph: ; preds = %.lr.ph, %.lr.ph.preheader
+ %indvar33 = phi i64 [ %indvar.next34, %.lr.ph ], [ 0, %.lr.ph.preheader ]
+ %indvar.next34 = add i64 %indvar33, 1
+ %exitcond40 = icmp eq i64 %indvar.next34, 0
+ br i1 %exitcond40, label %._crit_edge.loopexit, label %.lr.ph
+
+._crit_edge.loopexit: ; preds = %.lr.ph
+ br label %._crit_edge.simregexit
+
+._crit_edge.simregexit: ; preds = %.simregentry, %._crit_edge.loopexit
+ br label %._crit_edge
+
+._crit_edge: ; preds = %._crit_edge.simregexit
+ br i1 false, label %.loopexit.simregexit, label %.preheader.us.preheader
+
+.preheader.us.preheader: ; preds = %._crit_edge
+ br label %.preheader.us
+
+.preheader.us: ; preds = %.preheader.us, %.preheader.us.preheader
+ %exitcond26.old = icmp eq i64 undef, %tmp25
+ br i1 false, label %.loopexit.loopexit, label %.preheader.us
+
+; <label>:2 ; preds = %.loopexit
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/20110226-PHI-Node-removed.ll b/polly/test/Isl/CodeGen/20110226-PHI-Node-removed.ll
new file mode 100644
index 0000000..d794bb0
--- /dev/null
+++ b/polly/test/Isl/CodeGen/20110226-PHI-Node-removed.ll
@@ -0,0 +1,29 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @main() nounwind {
+.split:
+ br label %0
+
+.loopexit: ; preds = %.lr.ph, %0
+ %indvar.next16 = add i64 %indvar15, 1
+ %exitcond53 = icmp eq i64 %indvar.next16, 2048
+ br i1 %exitcond53, label %1, label %0
+
+; <label>:0 ; preds = %.loopexit, %.split
+ %indvar15 = phi i64 [ 0, %.split ], [ %indvar.next16, %.loopexit ]
+ %tmp59 = sub i64 2046, %indvar15
+ %tmp38 = and i64 %tmp59, 4294967295
+ %tmp39 = add i64 %tmp38, 1
+ br i1 false, label %.lr.ph, label %.loopexit
+
+.lr.ph: ; preds = %.lr.ph, %0
+ %indvar33 = phi i64 [ %indvar.next34, %.lr.ph ], [ 0, %0 ]
+ %indvar.next34 = add i64 %indvar33, 1
+ %exitcond40 = icmp eq i64 %indvar.next34, %tmp39
+ br i1 %exitcond40, label %.loopexit, label %.lr.ph
+
+; <label>:1 ; preds = %.loopexit
+ ret void
+}
diff --git a/polly/test/Isl/CodeGen/PHIInExit.ll b/polly/test/Isl/CodeGen/PHIInExit.ll
new file mode 100644
index 0000000..55f2a86
--- /dev/null
+++ b/polly/test/Isl/CodeGen/PHIInExit.ll
@@ -0,0 +1,76 @@
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+%struct..0__pthread_mutex_s = type { i32, i32, i32, i32, i32, i32, %struct.__pthread_list_t }
+%struct.__pthread_list_t = type { %struct.__pthread_list_t*, %struct.__pthread_list_t* }
+%union.pthread_attr_t = type { i64, [12 x i32] }
+%union.pthread_mutex_t = type { %struct..0__pthread_mutex_s }
+%union.pthread_mutexattr_t = type { i32 }
+
+@_ZL20__gthrw_pthread_oncePiPFvvE = alias weak i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0]
+@_ZL27__gthrw_pthread_getspecificj = alias weak i8* (i32)* @pthread_getspecific ; <i8* (i32)*> [#uses=0]
+@_ZL27__gthrw_pthread_setspecificjPKv = alias weak i32 (i32, i8*)* @pthread_setspecific ; <i32 (i32, i8*)*> [#uses=0]
+@_ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = alias weak i32 (i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create ; <i32 (i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)*> [#uses=0]
+@_ZL22__gthrw_pthread_cancelm = alias weak i32 (i64)* @pthread_cancel ; <i32 (i64)*> [#uses=0]
+@_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_lock ; <i32 (%union.pthread_mutex_t*)*> [#uses=0]
+@_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_trylock ; <i32 (%union.pthread_mutex_t*)*> [#uses=0]
+@_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_unlock ; <i32 (%union.pthread_mutex_t*)*> [#uses=0]
+@_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = alias weak i32 (%union.pthread_mutex_t*, %union.pthread_mutexattr_t*)* @pthread_mutex_init ; <i32 (%union.pthread_mutex_t*, %union.pthread_mutexattr_t*)*> [#uses=0]
+@_ZL26__gthrw_pthread_key_createPjPFvPvE = alias weak i32 (i32*, void (i8*)*)* @pthread_key_create ; <i32 (i32*, void (i8*)*)*> [#uses=0]
+@_ZL26__gthrw_pthread_key_deletej = alias weak i32 (i32)* @pthread_key_delete ; <i32 (i32)*> [#uses=0]
+@_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = alias weak i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_init ; <i32 (%union.pthread_mutexattr_t*)*> [#uses=0]
+@_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = alias weak i32 (%union.pthread_mutexattr_t*, i32)* @pthread_mutexattr_settype ; <i32 (%union.pthread_mutexattr_t*, i32)*> [#uses=0]
+@_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = alias weak i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_destroy ; <i32 (%union.pthread_mutexattr_t*)*> [#uses=0]
+
+define void @_ZL6createP6node_tii3v_tS1_d() {
+entry:
+ br i1 undef, label %bb, label %bb5
+
+bb: ; preds = %entry
+ br i1 false, label %bb1, label %bb3
+
+bb1: ; preds = %bb
+ br label %bb3
+
+bb3: ; preds = %bb1, %bb
+ %iftmp.99.0 = phi i64 [ undef, %bb1 ], [ 1, %bb ] ; <i64> [#uses=0]
+ br label %bb5
+
+bb5: ; preds = %bb3, %entry
+ br i1 undef, label %return, label %bb7
+
+bb7: ; preds = %bb5
+ unreachable
+
+return: ; preds = %bb5
+ ret void
+}
+
+declare i32 @pthread_once(i32*, void ()*)
+
+declare i8* @pthread_getspecific(i32)
+
+declare i32 @pthread_setspecific(i32, i8*)
+
+declare i32 @pthread_create(i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)
+
+declare i32 @pthread_cancel(i64)
+
+declare i32 @pthread_mutex_lock(%union.pthread_mutex_t*)
+
+declare i32 @pthread_mutex_trylock(%union.pthread_mutex_t*)
+
+declare i32 @pthread_mutex_unlock(%union.pthread_mutex_t*)
+
+declare i32 @pthread_mutex_init(%union.pthread_mutex_t*, %union.pthread_mutexattr_t*)
+
+declare i32 @pthread_key_create(i32*, void (i8*)*)
+
+declare i32 @pthread_key_delete(i32)
+
+declare i32 @pthread_mutexattr_init(%union.pthread_mutexattr_t*)
+
+declare i32 @pthread_mutexattr_settype(%union.pthread_mutexattr_t*, i32)
+
+declare i32 @pthread_mutexattr_destroy(%union.pthread_mutexattr_t*)
diff --git a/polly/test/Isl/CodeGen/constant_condition.ll b/polly/test/Isl/CodeGen/constant_condition.ll
new file mode 100644
index 0000000..045efff
--- /dev/null
+++ b/polly/test/Isl/CodeGen/constant_condition.ll
@@ -0,0 +1,56 @@
+;RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
+
+;#include <string.h>
+;int A[1];
+;
+;void constant_condition () {
+; int a = 0;
+; int b = 0;
+;
+; if (a == b)
+; A[0] = 0;
+; else
+; A[0] = 1;
+;}
+;
+;int main () {
+; int i;
+;
+; A[0] = 2;
+;
+; constant_condition();
+;
+; return A[0];
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+@A = common global [1 x i32] zeroinitializer, align 4 ; <[1 x i32]*> [#uses=1]
+
+define void @constant_condition() nounwind {
+bb:
+ %tmp = icmp eq i32 0, 0 ; <i1> [#uses=0]
+ br i1 true, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ store i32 0, i32* getelementptr inbounds ([1 x i32]* @A, i32 0, i32 0)
+ br label %bb3
+
+bb2: ; preds = %bb
+ store i32 1, i32* getelementptr inbounds ([1 x i32]* @A, i32 0, i32 0)
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1
+ ret void
+}
+
+define i32 @main() nounwind {
+bb:
+ store i32 2, i32* getelementptr inbounds ([1 x i32]* @A, i32 0, i32 0)
+ call void @constant_condition()
+ %tmp = load i32* getelementptr inbounds ([1 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
+ ret i32 %tmp
+}
+
+
+; CHECK: Stmt_bb1();
diff --git a/polly/test/Isl/CodeGen/loop_with_condition.ll b/polly/test/Isl/CodeGen/loop_with_condition.ll
new file mode 100644
index 0000000..29eb284
--- /dev/null
+++ b/polly/test/Isl/CodeGen/loop_with_condition.ll
@@ -0,0 +1,175 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
+
+;#include <string.h>
+;#define N 1024
+;int A[N];
+;int B[N];
+;
+;void loop_with_condition() {
+; int i;
+;
+; __sync_synchronize();
+; for (i = 0; i < N; i++) {
+; if (i <= N / 2)
+; A[i] = 1;
+; else
+; A[i] = 2;
+; B[i] = 3;
+; }
+; __sync_synchronize();
+;}
+;
+;int main () {
+; int i;
+;
+; memset(A, 0, sizeof(int) * N);
+; memset(B, 0, sizeof(int) * N);
+;
+; loop_with_condition();
+;
+; for (i = 0; i < N; i++)
+; if (B[i] != 3)
+; return 1;
+;
+; for (i = 0; i < N; i++)
+; if (i <= N / 2 && A[i] != 1)
+; return 1;
+; else if (i > N / 2 && A[i] != 2)
+; return 1;
+; return 0;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-pc-linux-gnu"
+
+@A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
+@B = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
+
+define void @loop_with_condition() nounwind {
+; <label>:0
+ fence seq_cst
+ br label %1
+
+; <label>:1 ; preds = %7, %0
+ %indvar = phi i64 [ %indvar.next, %7 ], [ 0, %0 ] ; <i64> [#uses=5]
+ %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
+ %scevgep1 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar ; <i32*> [#uses=1]
+ %i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
+ %exitcond = icmp ne i64 %indvar, 1024 ; <i1> [#uses=1]
+ br i1 %exitcond, label %2, label %8
+
+; <label>:2 ; preds = %1
+ %3 = icmp sle i32 %i.0, 512 ; <i1> [#uses=1]
+ br i1 %3, label %4, label %5
+
+; <label>:4 ; preds = %2
+ store i32 1, i32* %scevgep
+ br label %6
+
+; <label>:5 ; preds = %2
+ store i32 2, i32* %scevgep
+ br label %6
+
+; <label>:6 ; preds = %5, %4
+ store i32 3, i32* %scevgep1
+ br label %7
+
+; <label>:7 ; preds = %6
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %1
+
+; <label>:8 ; preds = %1
+ fence seq_cst
+ ret void
+}
+
+define i32 @main() nounwind {
+; <label>:0
+ call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
+ call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @B to i8*), i8 0, i64 4096, i32 1, i1 false)
+ call void @loop_with_condition()
+ br label %1
+
+; <label>:1 ; preds = %8, %0
+ %indvar1 = phi i64 [ %indvar.next2, %8 ], [ 0, %0 ] ; <i64> [#uses=3]
+ %scevgep3 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar1 ; <i32*> [#uses=1]
+ %i.0 = trunc i64 %indvar1 to i32 ; <i32> [#uses=1]
+ %2 = icmp slt i32 %i.0, 1024 ; <i1> [#uses=1]
+ br i1 %2, label %3, label %9
+
+; <label>:3 ; preds = %1
+ %4 = load i32* %scevgep3 ; <i32> [#uses=1]
+ %5 = icmp ne i32 %4, 3 ; <i1> [#uses=1]
+ br i1 %5, label %6, label %7
+
+; <label>:6 ; preds = %3
+ br label %28
+
+; <label>:7 ; preds = %3
+ br label %8
+
+; <label>:8 ; preds = %7
+ %indvar.next2 = add i64 %indvar1, 1 ; <i64> [#uses=1]
+ br label %1
+
+; <label>:9 ; preds = %1
+ br label %10
+
+; <label>:10 ; preds = %26, %9
+ %indvar = phi i64 [ %indvar.next, %26 ], [ 0, %9 ] ; <i64> [#uses=3]
+ %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
+ %i.1 = trunc i64 %indvar to i32 ; <i32> [#uses=3]
+ %11 = icmp slt i32 %i.1, 1024 ; <i1> [#uses=1]
+ br i1 %11, label %12, label %27
+
+; <label>:12 ; preds = %10
+ %13 = icmp sle i32 %i.1, 512 ; <i1> [#uses=1]
+ br i1 %13, label %14, label %18
+
+; <label>:14 ; preds = %12
+ %15 = load i32* %scevgep ; <i32> [#uses=1]
+ %16 = icmp ne i32 %15, 1 ; <i1> [#uses=1]
+ br i1 %16, label %17, label %18
+
+; <label>:17 ; preds = %14
+ br label %28
+
+; <label>:18 ; preds = %14, %12
+ %19 = icmp sgt i32 %i.1, 512 ; <i1> [#uses=1]
+ br i1 %19, label %20, label %24
+
+; <label>:20 ; preds = %18
+ %21 = load i32* %scevgep ; <i32> [#uses=1]
+ %22 = icmp ne i32 %21, 2 ; <i1> [#uses=1]
+ br i1 %22, label %23, label %24
+
+; <label>:23 ; preds = %20
+ br label %28
+
+; <label>:24 ; preds = %20, %18
+ br label %25
+
+; <label>:25 ; preds = %24
+ br label %26
+
+; <label>:26 ; preds = %25
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %10
+
+; <label>:27 ; preds = %10
+ br label %28
+
+; <label>:28 ; preds = %27, %23, %17, %6
+ %.0 = phi i32 [ 1, %6 ], [ 1, %17 ], [ 1, %23 ], [ 0, %27 ] ; <i32> [#uses=1]
+ ret i32 %.0
+}
+
+declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+
+; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1) {
+; CHECK: if (c1 >= 513) {
+; CHECK: Stmt_5(c1);
+; CHECK: } else
+; CHECK: Stmt_4(c1);
+; CHECK: Stmt_6(c1);
+; CHECK: }
diff --git a/polly/test/Isl/CodeGen/loop_with_condition_2.ll b/polly/test/Isl/CodeGen/loop_with_condition_2.ll
new file mode 100644
index 0000000..ce297db
--- /dev/null
+++ b/polly/test/Isl/CodeGen/loop_with_condition_2.ll
@@ -0,0 +1,137 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+@A = common global [1024 x i32] zeroinitializer, align 16
+@B = common global [1024 x i32] zeroinitializer, align 16
+
+define void @loop_with_condition(i32 %m) nounwind {
+entry:
+ fence seq_cst
+ %tmp = sub i32 0, %m
+ %tmp1 = zext i32 %tmp to i64
+ br label %for.cond
+
+for.cond: ; preds = %for.inc, %entry
+ %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ]
+ %arrayidx = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar
+ %arrayidx10 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar
+ %tmp2 = add i64 %tmp1, %indvar
+ %sub = trunc i64 %tmp2 to i32
+ %exitcond = icmp ne i64 %indvar, 1024
+ br i1 %exitcond, label %for.body, label %for.end
+
+for.body: ; preds = %for.cond
+ %cmp3 = icmp sle i32 %sub, 1024
+ br i1 %cmp3, label %if.then, label %if.else
+
+if.then: ; preds = %for.body
+ store i32 1, i32* %arrayidx
+ br label %if.end
+
+if.else: ; preds = %for.body
+ store i32 2, i32* %arrayidx
+ br label %if.end
+
+if.end: ; preds = %if.else, %if.then
+ store i32 3, i32* %arrayidx10
+ br label %for.inc
+
+for.inc: ; preds = %if.end
+ %indvar.next = add i64 %indvar, 1
+ br label %for.cond
+
+for.end: ; preds = %for.cond
+ fence seq_cst
+ ret void
+}
+
+define i32 @main() nounwind {
+entry:
+ call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
+ call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @B to i8*), i8 0, i64 4096, i32 1, i1 false)
+ call void @loop_with_condition(i32 5)
+ br label %for.cond
+
+for.cond: ; preds = %for.inc, %entry
+ %indvar1 = phi i64 [ %indvar.next2, %for.inc ], [ 0, %entry ]
+ %arrayidx = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar1
+ %i.0 = trunc i64 %indvar1 to i32
+ %cmp = icmp slt i32 %i.0, 1024
+ br i1 %cmp, label %for.body, label %for.end
+
+for.body: ; preds = %for.cond
+ %tmp3 = load i32* %arrayidx
+ %cmp4 = icmp ne i32 %tmp3, 3
+ br i1 %cmp4, label %if.then, label %if.end
+
+if.then: ; preds = %for.body
+ br label %return
+
+if.end: ; preds = %for.body
+ br label %for.inc
+
+for.inc: ; preds = %if.end
+ %indvar.next2 = add i64 %indvar1, 1
+ br label %for.cond
+
+for.end: ; preds = %for.cond
+ br label %for.cond6
+
+for.cond6: ; preds = %for.inc32, %for.end
+ %indvar = phi i64 [ %indvar.next, %for.inc32 ], [ 0, %for.end ]
+ %arrayidx15 = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar
+ %i.1 = trunc i64 %indvar to i32
+ %cmp8 = icmp slt i32 %i.1, 1024
+ br i1 %cmp8, label %for.body9, label %for.end35
+
+for.body9: ; preds = %for.cond6
+ br i1 true, label %land.lhs.true, label %if.else
+
+land.lhs.true: ; preds = %for.body9
+ %tmp16 = load i32* %arrayidx15
+ %cmp17 = icmp ne i32 %tmp16, 1
+ br i1 %cmp17, label %if.then18, label %if.else
+
+if.then18: ; preds = %land.lhs.true
+ br label %return
+
+if.else: ; preds = %land.lhs.true, %for.body9
+ br i1 false, label %land.lhs.true23, label %if.end30
+
+land.lhs.true23: ; preds = %if.else
+ %tmp27 = load i32* %arrayidx15
+ %cmp28 = icmp ne i32 %tmp27, 2
+ br i1 %cmp28, label %if.then29, label %if.end30
+
+if.then29: ; preds = %land.lhs.true23
+ br label %return
+
+if.end30: ; preds = %land.lhs.true23, %if.else
+ br label %if.end31
+
+if.end31: ; preds = %if.end30
+ br label %for.inc32
+
+for.inc32: ; preds = %if.end31
+ %indvar.next = add i64 %indvar, 1
+ br label %for.cond6
+
+for.end35: ; preds = %for.cond6
+ br label %return
+
+return: ; preds = %for.end35, %if.then29, %if.then18, %if.then
+ %retval.0 = phi i32 [ 1, %if.then ], [ 1, %if.then18 ], [ 1, %if.then29 ], [ 0, %for.end35 ]
+ ret i32 %retval.0
+}
+
+declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+
+; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1) {
+; CHECK: if (c1 >= m + 1025) {
+; CHECK: Stmt_if_else(c1);
+; CHECK: } else
+; CHECK: Stmt_if_then(c1);
+; CHECK: Stmt_if_end(c1);
+; CHECK: }
diff --git a/polly/test/Isl/CodeGen/loop_with_condition_ineq.ll b/polly/test/Isl/CodeGen/loop_with_condition_ineq.ll
new file mode 100644
index 0000000..3066b8e
--- /dev/null
+++ b/polly/test/Isl/CodeGen/loop_with_condition_ineq.ll
@@ -0,0 +1,177 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
+
+;#include <string.h>
+;#define N 1024
+;int A[N];
+;int B[N];
+;
+;void loop_with_condition_ineq() {
+; int i;
+;
+; __sync_synchronize();
+; for (i = 0; i < N; i++) {
+; if (i != N / 2)
+; A[i] = 1;
+; else
+; A[i] = 2;
+; B[i] = 3;
+; }
+; __sync_synchronize();
+;}
+;
+;int main () {
+; int i;
+;
+; memset(A, 0, sizeof(int) * N);
+; memset(B, 0, sizeof(int) * N);
+;
+; loop_with_condition_ineq();
+;
+; for (i = 0; i < N; i++)
+; if (B[i] != 3)
+; return 1;
+;
+; for (i = 0; i < N; i++)
+; if (i != N / 2 && A[i] != 1)
+; return 1;
+; else if (i == N && A[i] != 2)
+; return 1;
+; return 0;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-pc-linux-gnu"
+
+@A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
+@B = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
+
+define void @loop_with_condition_ineq() nounwind {
+; <label>:0
+ fence seq_cst
+ br label %1
+
+; <label>:1 ; preds = %7, %0
+ %indvar = phi i64 [ %indvar.next, %7 ], [ 0, %0 ] ; <i64> [#uses=5]
+ %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
+ %scevgep1 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar ; <i32*> [#uses=1]
+ %i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
+ %exitcond = icmp ne i64 %indvar, 1024 ; <i1> [#uses=1]
+ br i1 %exitcond, label %2, label %8
+
+; <label>:2 ; preds = %1
+ %3 = icmp ne i32 %i.0, 512 ; <i1> [#uses=1]
+ br i1 %3, label %4, label %5
+
+; <label>:4 ; preds = %2
+ store i32 1, i32* %scevgep
+ br label %6
+
+; <label>:5 ; preds = %2
+ store i32 2, i32* %scevgep
+ br label %6
+
+; <label>:6 ; preds = %5, %4
+ store i32 3, i32* %scevgep1
+ br label %7
+
+; <label>:7 ; preds = %6
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %1
+
+; <label>:8 ; preds = %1
+ fence seq_cst
+ ret void
+}
+
+define i32 @main() nounwind {
+; <label>:0
+ call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
+ call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @B to i8*), i8 0, i64 4096, i32 1, i1 false)
+ call void @loop_with_condition_ineq()
+ br label %1
+
+; <label>:1 ; preds = %8, %0
+ %indvar1 = phi i64 [ %indvar.next2, %8 ], [ 0, %0 ] ; <i64> [#uses=3]
+ %scevgep3 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar1 ; <i32*> [#uses=1]
+ %i.0 = trunc i64 %indvar1 to i32 ; <i32> [#uses=1]
+ %2 = icmp slt i32 %i.0, 1024 ; <i1> [#uses=1]
+ br i1 %2, label %3, label %9
+
+; <label>:3 ; preds = %1
+ %4 = load i32* %scevgep3 ; <i32> [#uses=1]
+ %5 = icmp ne i32 %4, 3 ; <i1> [#uses=1]
+ br i1 %5, label %6, label %7
+
+; <label>:6 ; preds = %3
+ br label %28
+
+; <label>:7 ; preds = %3
+ br label %8
+
+; <label>:8 ; preds = %7
+ %indvar.next2 = add i64 %indvar1, 1 ; <i64> [#uses=1]
+ br label %1
+
+; <label>:9 ; preds = %1
+ br label %10
+
+; <label>:10 ; preds = %26, %9
+ %indvar = phi i64 [ %indvar.next, %26 ], [ 0, %9 ] ; <i64> [#uses=3]
+ %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
+ %i.1 = trunc i64 %indvar to i32 ; <i32> [#uses=3]
+ %11 = icmp slt i32 %i.1, 1024 ; <i1> [#uses=1]
+ br i1 %11, label %12, label %27
+
+; <label>:12 ; preds = %10
+ %13 = icmp ne i32 %i.1, 512 ; <i1> [#uses=1]
+ br i1 %13, label %14, label %18
+
+; <label>:14 ; preds = %12
+ %15 = load i32* %scevgep ; <i32> [#uses=1]
+ %16 = icmp ne i32 %15, 1 ; <i1> [#uses=1]
+ br i1 %16, label %17, label %18
+
+; <label>:17 ; preds = %14
+ br label %28
+
+; <label>:18 ; preds = %14, %12
+ %19 = icmp eq i32 %i.1, 1024 ; <i1> [#uses=1]
+ br i1 %19, label %20, label %24
+
+; <label>:20 ; preds = %18
+ %21 = load i32* %scevgep ; <i32> [#uses=1]
+ %22 = icmp ne i32 %21, 2 ; <i1> [#uses=1]
+ br i1 %22, label %23, label %24
+
+; <label>:23 ; preds = %20
+ br label %28
+
+; <label>:24 ; preds = %20, %18
+ br label %25
+
+; <label>:25 ; preds = %24
+ br label %26
+
+; <label>:26 ; preds = %25
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %10
+
+; <label>:27 ; preds = %10
+ br label %28
+
+; <label>:28 ; preds = %27, %23, %17, %6
+ %.0 = phi i32 [ 1, %6 ], [ 1, %17 ], [ 1, %23 ], [ 0, %27 ] ; <i32> [#uses=1]
+ ret i32 %.0
+}
+
+declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+
+; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1) {
+; CHECK: if (c1 >= 513) {
+; CHECK: Stmt_4(c1);
+; CHECK: } else if (c1 <= 511) {
+; CHECK: Stmt_4(c1);
+; CHECK: } else
+; CHECK: Stmt_5(512);
+; CHECK: Stmt_6(c1);
+; CHECK: }
diff --git a/polly/test/Isl/CodeGen/loop_with_condition_nested.ll b/polly/test/Isl/CodeGen/loop_with_condition_nested.ll
new file mode 100644
index 0000000..188e293
--- /dev/null
+++ b/polly/test/Isl/CodeGen/loop_with_condition_nested.ll
@@ -0,0 +1,211 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
+
+;#include <string.h>
+;#define N 1024
+;int A[N];
+;int B[N];
+;
+;void loop_with_condition() {
+; int i;
+;
+; __sync_synchronize();
+; for (i = 0; i < N; i++) {
+; if (i <= N / 2) {
+; if (i > 20)
+; A[i] = 1;
+; else
+; A[i] = 2;
+; }
+; B[i] = 3;
+; }
+; __sync_synchronize();
+;}
+;
+;int main () {
+; int i;
+;
+; memset(A, 0, sizeof(int) * N);
+; memset(B, 0, sizeof(int) * N);
+;
+; loop_with_condition();
+;
+; for (i = 0; i < N; i++)
+; if (B[i] != 3)
+; return 1;
+;
+; for (i = 0; i < N; i++)
+; if (i <= N / 2 && i > 20 && A[i] != 1)
+; return 1;
+; else if (i > N / 2) {
+; if (i <= 20 && A[i] != 2)
+; return 1;
+; if (i > 20 && A[i] != 0)
+; return 1;
+; }
+; return 0;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-pc-linux-gnu"
+
+@A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
+@B = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
+
+define void @loop_with_condition() nounwind {
+; <label>:0
+ fence seq_cst
+ br label %1
+
+; <label>:1 ; preds = %10, %0
+ %indvar = phi i64 [ %indvar.next, %10 ], [ 0, %0 ] ; <i64> [#uses=5]
+ %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
+ %scevgep1 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar ; <i32*> [#uses=1]
+ %i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=2]
+ %exitcond = icmp ne i64 %indvar, 1024 ; <i1> [#uses=1]
+ br i1 %exitcond, label %2, label %11
+
+; <label>:2 ; preds = %1
+ %3 = icmp sle i32 %i.0, 512 ; <i1> [#uses=1]
+ br i1 %3, label %4, label %9
+
+; <label>:4 ; preds = %2
+ %5 = icmp sgt i32 %i.0, 20 ; <i1> [#uses=1]
+ br i1 %5, label %6, label %7
+
+; <label>:6 ; preds = %4
+ store i32 1, i32* %scevgep
+ br label %8
+
+; <label>:7 ; preds = %4
+ store i32 2, i32* %scevgep
+ br label %8
+
+; <label>:8 ; preds = %7, %6
+ br label %9
+
+; <label>:9 ; preds = %8, %2
+ store i32 3, i32* %scevgep1
+ br label %10
+
+; <label>:10 ; preds = %9
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %1
+
+; <label>:11 ; preds = %1
+ fence seq_cst
+ ret void
+}
+
+define i32 @main() nounwind {
+; <label>:0
+ call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
+ call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @B to i8*), i8 0, i64 4096, i32 1, i1 false)
+ call void @loop_with_condition()
+ br label %1
+
+; <label>:1 ; preds = %8, %0
+ %indvar1 = phi i64 [ %indvar.next2, %8 ], [ 0, %0 ] ; <i64> [#uses=3]
+ %scevgep3 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar1 ; <i32*> [#uses=1]
+ %i.0 = trunc i64 %indvar1 to i32 ; <i32> [#uses=1]
+ %2 = icmp slt i32 %i.0, 1024 ; <i1> [#uses=1]
+ br i1 %2, label %3, label %9
+
+; <label>:3 ; preds = %1
+ %4 = load i32* %scevgep3 ; <i32> [#uses=1]
+ %5 = icmp ne i32 %4, 3 ; <i1> [#uses=1]
+ br i1 %5, label %6, label %7
+
+; <label>:6 ; preds = %3
+ br label %39
+
+; <label>:7 ; preds = %3
+ br label %8
+
+; <label>:8 ; preds = %7
+ %indvar.next2 = add i64 %indvar1, 1 ; <i64> [#uses=1]
+ br label %1
+
+; <label>:9 ; preds = %1
+ br label %10
+
+; <label>:10 ; preds = %37, %9
+ %indvar = phi i64 [ %indvar.next, %37 ], [ 0, %9 ] ; <i64> [#uses=3]
+ %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=3]
+ %i.1 = trunc i64 %indvar to i32 ; <i32> [#uses=6]
+ %11 = icmp slt i32 %i.1, 1024 ; <i1> [#uses=1]
+ br i1 %11, label %12, label %38
+
+; <label>:12 ; preds = %10
+ %13 = icmp sle i32 %i.1, 512 ; <i1> [#uses=1]
+ br i1 %13, label %14, label %20
+
+; <label>:14 ; preds = %12
+ %15 = icmp sgt i32 %i.1, 20 ; <i1> [#uses=1]
+ br i1 %15, label %16, label %20
+
+; <label>:16 ; preds = %14
+ %17 = load i32* %scevgep ; <i32> [#uses=1]
+ %18 = icmp ne i32 %17, 1 ; <i1> [#uses=1]
+ br i1 %18, label %19, label %20
+
+; <label>:19 ; preds = %16
+ br label %39
+
+; <label>:20 ; preds = %16, %14, %12
+ %21 = icmp sgt i32 %i.1, 512 ; <i1> [#uses=1]
+ br i1 %21, label %22, label %35
+
+; <label>:22 ; preds = %20
+ %23 = icmp sle i32 %i.1, 20 ; <i1> [#uses=1]
+ br i1 %23, label %24, label %28
+
+; <label>:24 ; preds = %22
+ %25 = load i32* %scevgep ; <i32> [#uses=1]
+ %26 = icmp ne i32 %25, 2 ; <i1> [#uses=1]
+ br i1 %26, label %27, label %28
+
+; <label>:27 ; preds = %24
+ br label %39
+
+; <label>:28 ; preds = %24, %22
+ %29 = icmp sgt i32 %i.1, 20 ; <i1> [#uses=1]
+ br i1 %29, label %30, label %34
+
+; <label>:30 ; preds = %28
+ %31 = load i32* %scevgep ; <i32> [#uses=1]
+ %32 = icmp ne i32 %31, 0 ; <i1> [#uses=1]
+ br i1 %32, label %33, label %34
+
+; <label>:33 ; preds = %30
+ br label %39
+
+; <label>:34 ; preds = %30, %28
+ br label %35
+
+; <label>:35 ; preds = %34, %20
+ br label %36
+
+; <label>:36 ; preds = %35
+ br label %37
+
+; <label>:37 ; preds = %36
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %10
+
+; <label>:38 ; preds = %10
+ br label %39
+
+; <label>:39 ; preds = %38, %33, %27, %19, %6
+ %.0 = phi i32 [ 1, %6 ], [ 1, %19 ], [ 1, %27 ], [ 1, %33 ], [ 0, %38 ] ; <i32> [#uses=1]
+ ret i32 %.0
+}
+
+declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+
+; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1) {
+; CHECK: if (c1 <= 20) {
+; CHECK: Stmt_7(c1);
+; CHECK: } else if (c1 <= 512)
+; CHECK: Stmt_6(c1);
+; CHECK: Stmt_9(c1);
+; CHECK: }
diff --git a/polly/test/Isl/CodeGen/reduction_2.ll b/polly/test/Isl/CodeGen/reduction_2.ll
new file mode 100644
index 0000000..c1daa33
--- /dev/null
+++ b/polly/test/Isl/CodeGen/reduction_2.ll
@@ -0,0 +1,93 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
+
+;#include <string.h>
+;#include <stdio.h>
+;#define N 1021
+;
+;int main () {
+; int i;
+; int A[N];
+; int RED[1];
+;
+; memset(A, 0, sizeof(int) * N);
+;
+; A[0] = 1;
+; A[1] = 1;
+; RED[0] = 0;
+;
+; for (i = 2; i < N; i++) {
+; A[i] = A[i-1] + A[i-2];
+; RED[0] += A[i-2];
+; }
+;
+; if (RED[0] != 382399368)
+; return 1;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define i32 @main() nounwind {
+entry:
+ %A = alloca [1021 x i32], align 4 ; <[1021 x i32]*> [#uses=6]
+ %RED = alloca [1 x i32], align 4 ; <[1 x i32]*> [#uses=3]
+ %arraydecay = getelementptr inbounds [1021 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
+ %conv = bitcast i32* %arraydecay to i8* ; <i8*> [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %conv, i8 0, i64 4084, i32 1, i1 false)
+ %arraydecay1 = getelementptr inbounds [1021 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
+ %arrayidx = getelementptr inbounds i32* %arraydecay1, i64 0 ; <i32*> [#uses=1]
+ store i32 1, i32* %arrayidx
+ %arraydecay2 = getelementptr inbounds [1021 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
+ %arrayidx3 = getelementptr inbounds i32* %arraydecay2, i64 1 ; <i32*> [#uses=1]
+ store i32 1, i32* %arrayidx3
+ %arraydecay4 = getelementptr inbounds [1 x i32]* %RED, i32 0, i32 0 ; <i32*> [#uses=1]
+ %arrayidx5 = getelementptr inbounds i32* %arraydecay4, i64 0 ; <i32*> [#uses=1]
+ store i32 0, i32* %arrayidx5
+ br label %for.cond
+
+for.cond: ; preds = %for.inc, %entry
+ %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ] ; <i64> [#uses=5]
+ %arrayidx15 = getelementptr [1021 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=2]
+ %tmp = add i64 %indvar, 2 ; <i64> [#uses=1]
+ %arrayidx20 = getelementptr [1021 x i32]* %A, i64 0, i64 %tmp ; <i32*> [#uses=1]
+ %tmp1 = add i64 %indvar, 1 ; <i64> [#uses=1]
+ %arrayidx9 = getelementptr [1021 x i32]* %A, i64 0, i64 %tmp1 ; <i32*> [#uses=1]
+ %exitcond = icmp ne i64 %indvar, 1019 ; <i1> [#uses=1]
+ br i1 %exitcond, label %for.body, label %for.end
+
+for.body: ; preds = %for.cond
+ %tmp10 = load i32* %arrayidx9 ; <i32> [#uses=1]
+ %tmp16 = load i32* %arrayidx15 ; <i32> [#uses=1]
+ %add = add nsw i32 %tmp10, %tmp16 ; <i32> [#uses=1]
+ store i32 %add, i32* %arrayidx20
+ %tmp26 = load i32* %arrayidx15 ; <i32> [#uses=1]
+ %arraydecay27 = getelementptr inbounds [1 x i32]* %RED, i32 0, i32 0 ; <i32*> [#uses=1]
+ %arrayidx28 = getelementptr inbounds i32* %arraydecay27, i64 0 ; <i32*> [#uses=2]
+ %tmp29 = load i32* %arrayidx28 ; <i32> [#uses=1]
+ %add30 = add nsw i32 %tmp29, %tmp26 ; <i32> [#uses=1]
+ store i32 %add30, i32* %arrayidx28
+ br label %for.inc
+
+for.inc: ; preds = %for.body
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %for.cond
+
+for.end: ; preds = %for.cond
+ %arraydecay32 = getelementptr inbounds [1 x i32]* %RED, i32 0, i32 0 ; <i32*> [#uses=1]
+ %arrayidx33 = getelementptr inbounds i32* %arraydecay32, i64 0 ; <i32*> [#uses=1]
+ %tmp34 = load i32* %arrayidx33 ; <i32> [#uses=1]
+ %cmp35 = icmp ne i32 %tmp34, 382399368 ; <i1> [#uses=1]
+ br i1 %cmp35, label %if.then, label %if.end
+
+if.then: ; preds = %for.end
+ br label %if.end
+
+if.end: ; preds = %if.then, %for.end
+ %retval.0 = phi i32 [ 1, %if.then ], [ 0, %for.end ] ; <i32> [#uses=1]
+ ret i32 %retval.0
+}
+
+declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+
+; CHECK: for (int c1 = 0; c1 <= 1018; c1 += 1)
+; CHECK: Stmt_for_body(c1);
diff --git a/polly/test/Isl/CodeGen/sequential_loops.ll b/polly/test/Isl/CodeGen/sequential_loops.ll
new file mode 100644
index 0000000..538e454
--- /dev/null
+++ b/polly/test/Isl/CodeGen/sequential_loops.ll
@@ -0,0 +1,138 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
+
+;#include <string.h>
+;#define N 1024
+;
+;int A[N];
+;
+;void sequential_loops() {
+; int i;
+; for (i = 0; i < N/2; i++) {
+; A[i] = 1;
+; }
+; for (i = N/2 ; i < N; i++) {
+; A[i] = 2;
+; }
+;}
+;
+;int main () {
+; int i;
+; memset(A, 0, sizeof(int) * N);
+;
+; sequential_loops();
+;
+; for (i = 0; i < N; i++) {
+; if (A[i] != 1 && i < N/2)
+; return 1;
+; if (A[i] != 2 && i >= N/2)
+; return 1;
+; }
+;
+; return 0;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-pc-linux-gnu"
+
+@A = common global [1024 x i32] zeroinitializer, align 4 ; <[1024 x i32]*> [#uses=5]
+
+define void @sequential_loops() nounwind {
+bb:
+ br label %bb1
+
+bb1: ; preds = %bb3, %bb
+ %indvar1 = phi i64 [ %indvar.next2, %bb3 ], [ 0, %bb ]
+ %scevgep4 = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar1
+ %exitcond3 = icmp ne i64 %indvar1, 512
+ br i1 %exitcond3, label %bb2, label %bb4
+
+bb2: ; preds = %bb1
+ store i32 1, i32* %scevgep4
+ br label %bb3
+
+bb3: ; preds = %bb2
+ %indvar.next2 = add i64 %indvar1, 1
+ br label %bb1
+
+bb4: ; preds = %bb1
+ br label %bb5
+
+bb5: ; preds = %bb7, %bb4
+ %indvar = phi i64 [ %indvar.next, %bb7 ], [ 0, %bb4 ]
+ %tmp = add i64 %indvar, 512
+ %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %tmp
+ %exitcond = icmp ne i64 %indvar, 512
+ br i1 %exitcond, label %bb6, label %bb8
+
+bb6: ; preds = %bb5
+ store i32 2, i32* %scevgep
+ br label %bb7
+
+bb7: ; preds = %bb6
+ %indvar.next = add i64 %indvar, 1
+ br label %bb5
+
+bb8: ; preds = %bb5
+ ret void
+}
+
+define i32 @main() nounwind {
+bb:
+ call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
+ call void @sequential_loops()
+ br label %bb1
+
+bb1: ; preds = %bb15, %bb
+ %indvar = phi i64 [ %indvar.next, %bb15 ], [ 0, %bb ]
+ %i.0 = trunc i64 %indvar to i32
+ %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar
+ %tmp = icmp slt i32 %i.0, 1024
+ br i1 %tmp, label %bb2, label %bb16
+
+bb2: ; preds = %bb1
+ %tmp3 = load i32* %scevgep
+ %tmp4 = icmp ne i32 %tmp3, 1
+ br i1 %tmp4, label %bb5, label %bb8
+
+bb5: ; preds = %bb2
+ %tmp6 = icmp slt i32 %i.0, 512
+ br i1 %tmp6, label %bb7, label %bb8
+
+bb7: ; preds = %bb5
+ br label %bb17
+
+bb8: ; preds = %bb5, %bb2
+ %tmp9 = load i32* %scevgep
+ %tmp10 = icmp ne i32 %tmp9, 2
+ br i1 %tmp10, label %bb11, label %bb14
+
+bb11: ; preds = %bb8
+ %tmp12 = icmp sge i32 %i.0, 512
+ br i1 %tmp12, label %bb13, label %bb14
+
+bb13: ; preds = %bb11
+ br label %bb17
+
+bb14: ; preds = %bb11, %bb8
+ br label %bb15
+
+bb15: ; preds = %bb14
+ %indvar.next = add i64 %indvar, 1
+ br label %bb1
+
+bb16: ; preds = %bb1
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb13, %bb7
+ %.0 = phi i32 [ 1, %bb7 ], [ 1, %bb13 ], [ 0, %bb16 ]
+ ret i32 %.0
+}
+
+declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+
+; CHECK: {
+; CHECK: for (int c1 = 0; c1 <= 511; c1 += 1)
+; CHECK: Stmt_bb2(c1);
+; CHECK: for (int c1 = 0; c1 <= 511; c1 += 1)
+; CHECK: Stmt_bb6(c1);
+; CHECK: }
diff --git a/polly/test/Isl/CodeGen/simple_nonaffine_loop.ll b/polly/test/Isl/CodeGen/simple_nonaffine_loop.ll
new file mode 100644
index 0000000..a1fd0ac
--- /dev/null
+++ b/polly/test/Isl/CodeGen/simple_nonaffine_loop.ll
@@ -0,0 +1,59 @@
+; RUN: opt %loadPolly %defaultOpts -O3 -polly-ast -polly-allow-nonaffine -analyze < %s | FileCheck %s
+
+;#include <stdio.h>
+;#include <stdlib.h>
+;#include <math.h>
+;
+;int main()
+;{
+; int A[1024*1024];
+; int i;
+; for (i = 0; i < 1024; i++)
+; A[i*i] = 2*i;
+;
+; printf("Random Value: %d", A[rand() % 1024*1024]);
+;
+; return 0;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
+target triple = "x86_64-apple-macosx10.7.2"
+
+@.str = private unnamed_addr constant [17 x i8] c"Random Value: %d\00", align 1
+
+define i32 @main() nounwind uwtable ssp {
+entry:
+ %A = alloca [1048576 x i32], align 16
+ br label %entry.split
+
+entry.split: ; preds = %entry
+ br label %for.body
+
+for.body: ; preds = %entry.split, %for.body
+ %0 = phi i32 [ 0, %entry.split ], [ %1, %for.body ]
+ %mul = mul i32 %0, 2
+ %mul1 = mul nsw i32 %0, %0
+ %idxprom1 = zext i32 %mul1 to i64
+ %arrayidx = getelementptr inbounds [1048576 x i32]* %A, i64 0, i64 %idxprom1
+ store i32 %mul, i32* %arrayidx, align 4
+ %1 = add nsw i32 %0, 1
+ %exitcond = icmp ne i32 %1, 1024
+ br i1 %exitcond, label %for.body, label %for.end
+
+for.end: ; preds = %for.body
+ %call = call i32 @rand() nounwind
+ %rem = srem i32 %call, 1024
+ %mul2 = shl nsw i32 %rem, 10
+ %idxprom3 = sext i32 %mul2 to i64
+ %arrayidx4 = getelementptr inbounds [1048576 x i32]* %A, i64 0, i64 %idxprom3
+ %2 = load i32* %arrayidx4, align 16
+ %call5 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([17 x i8]* @.str, i64 0, i64 0), i32 %2) nounwind
+ ret i32 0
+}
+
+declare i32 @printf(i8*, ...)
+
+declare i32 @rand()
+
+; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1)
+; CHECK: Stmt_for_body(c1);
diff --git a/polly/test/Isl/CodeGen/single_do_loop_int_max_iterations.ll b/polly/test/Isl/CodeGen/single_do_loop_int_max_iterations.ll
new file mode 100644
index 0000000..1751d78
--- /dev/null
+++ b/polly/test/Isl/CodeGen/single_do_loop_int_max_iterations.ll
@@ -0,0 +1,93 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze -S < %s | FileCheck %s
+
+;#define N 20
+;#include "limits.h"
+;#include <stdio.h>
+;int A[N];
+;
+;void single_do_loop_int_max_iterations() {
+; int i;
+;
+; __sync_synchronize();
+;
+; i = 0;
+;
+; do {
+; A[0] = i;
+; ++i;
+; } while (i < INT_MAX);
+;
+; __sync_synchronize();
+;}
+;
+;int main () {
+; int i;
+;
+; A[0] = 0;
+;
+; single_do_loop_int_max_iterations();
+;
+; fprintf(stdout, "Output %d\n", A[0]);
+;
+; if (A[0] == INT_MAX - 1)
+; return 0;
+; else
+; return 1;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
+%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 }
+
+@A = common global [20 x i32] zeroinitializer, align 4 ; <[20 x i32]*> [#uses=1]
+@stdout = external global %struct._IO_FILE* ; <%struct._IO_FILE**> [#uses=1]
+@.str = private constant [11 x i8] c"Output %d\0A\00" ; <[11 x i8]*> [#uses=1]
+
+define void @single_do_loop_int_max_iterations() nounwind {
+entry:
+ fence seq_cst
+ br label %do.body
+
+do.body: ; preds = %do.cond, %entry
+ %0 = phi i32 [ 0, %entry ], [ %inc, %do.cond ] ; <i32> [#uses=2]
+ store i32 %0, i32* getelementptr inbounds ([20 x i32]* @A, i32 0, i32 0)
+ %inc = add nsw i32 %0, 1 ; <i32> [#uses=2]
+ br label %do.cond
+
+do.cond: ; preds = %do.body
+ %exitcond = icmp ne i32 %inc, 2147483647 ; <i1> [#uses=1]
+ br i1 %exitcond, label %do.body, label %do.end
+
+do.end: ; preds = %do.cond
+ fence seq_cst
+ ret void
+}
+
+define i32 @main() nounwind {
+entry:
+ store i32 0, i32* getelementptr inbounds ([20 x i32]* @A, i32 0, i32 0)
+ call void @single_do_loop_int_max_iterations()
+ %tmp = load %struct._IO_FILE** @stdout ; <%struct._IO_FILE*> [#uses=1]
+ %tmp1 = load i32* getelementptr inbounds ([20 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
+ %call = call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf(%struct._IO_FILE* %tmp, i8* getelementptr inbounds ([11 x i8]* @.str, i32 0, i32 0), i32 %tmp1) ; <i32> [#uses=0]
+ %tmp2 = load i32* getelementptr inbounds ([20 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
+ %cmp = icmp eq i32 %tmp2, 2147483646 ; <i1> [#uses=1]
+ br i1 %cmp, label %if.then, label %if.else
+
+if.then: ; preds = %entry
+ br label %return
+
+if.else: ; preds = %entry
+ br label %return
+
+return: ; preds = %if.else, %if.then
+ %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
+ ret i32 %retval.0
+}
+
+declare i32 @fprintf(%struct._IO_FILE*, i8*, ...)
+
+; CHECK: for (int c1 = 0; c1 <= 2147483646; c1 += 1)
+; CHECK: Stmt_do_body(c1);
diff --git a/polly/test/Isl/CodeGen/single_do_loop_ll_max_iterations.ll b/polly/test/Isl/CodeGen/single_do_loop_ll_max_iterations.ll
new file mode 100644
index 0000000..c9aa26f
--- /dev/null
+++ b/polly/test/Isl/CodeGen/single_do_loop_ll_max_iterations.ll
@@ -0,0 +1,69 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze -S < %s | FileCheck %s
+; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl -O3 %s
+
+;#define N 20
+;#include "limits.h"
+;long long A[N];
+;
+;int main () {
+; long long i;
+;
+; A[0] = 0;
+;
+; __sync_synchronize();
+;
+; i = 0;
+;
+; do {
+; A[0] = i;
+; ++i;
+; } while (i < LLONG_MAX);
+;
+; __sync_synchronize();
+;
+; if (A[0] == LLONG_MAX - 1)
+; return 0;
+; else
+; return 1;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+@A = common global [20 x i64] zeroinitializer, align 8 ; <[20 x i64]*> [#uses=1]
+
+define i32 @main() nounwind {
+entry:
+ store i64 0, i64* getelementptr inbounds ([20 x i64]* @A, i32 0, i32 0)
+ fence seq_cst
+ br label %do.body
+
+do.body: ; preds = %do.cond, %entry
+ %0 = phi i64 [ 0, %entry ], [ %inc, %do.cond ] ; <i64> [#uses=2]
+ store i64 %0, i64* getelementptr inbounds ([20 x i64]* @A, i32 0, i32 0)
+ %inc = add nsw i64 %0, 1 ; <i64> [#uses=2]
+ br label %do.cond
+
+do.cond: ; preds = %do.body
+ %exitcond = icmp ne i64 %inc, 9223372036854775807 ; <i1> [#uses=1]
+ br i1 %exitcond, label %do.body, label %do.end
+
+do.end: ; preds = %do.cond
+ fence seq_cst
+ %tmp3 = load i64* getelementptr inbounds ([20 x i64]* @A, i32 0, i32 0) ; <i64> [#uses=1]
+ %cmp4 = icmp eq i64 %tmp3, 9223372036854775806 ; <i1> [#uses=1]
+ br i1 %cmp4, label %if.then, label %if.else
+
+if.then: ; preds = %do.end
+ br label %return
+
+if.else: ; preds = %do.end
+ br label %return
+
+return: ; preds = %if.else, %if.then
+ %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
+ ret i32 %retval.0
+}
+
+; CHECK: for (int c1 = 0; c1 <= 9223372036854775806; c1 += 1)
+; CHECK: Stmt_do_body(c1);
diff --git a/polly/test/Isl/CodeGen/single_do_loop_scev_replace.ll b/polly/test/Isl/CodeGen/single_do_loop_scev_replace.ll
new file mode 100644
index 0000000..5696415
--- /dev/null
+++ b/polly/test/Isl/CodeGen/single_do_loop_scev_replace.ll
@@ -0,0 +1,95 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
+
+;#define N 20
+;#include "limits.h"
+;#include <stdio.h>
+;int A[2 * N];
+;
+;void single_do_loop_scev_replace() {
+; int i;
+;
+; __sync_synchronize();
+;
+; i = 0;
+;
+; do {
+; A[2 * i] = i;
+; ++i;
+; } while (i < N);
+;
+; __sync_synchronize();
+;}
+;
+;int main () {
+; int i;
+;
+; single_do_loop_scev_replace();
+;
+; fprintf(stdout, "Output %d\n", A[0]);
+;
+; if (A[2 * N - 2] == N - 1)
+; return 0;
+; else
+; return 1;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
+%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 }
+
+@A = common global [40 x i32] zeroinitializer, align 4 ; <[40 x i32]*> [#uses=3]
+@stdout = external global %struct._IO_FILE* ; <%struct._IO_FILE**> [#uses=1]
+@.str = private constant [11 x i8] c"Output %d\0A\00" ; <[11 x i8]*> [#uses=1]
+
+define void @single_do_loop_scev_replace() nounwind {
+entry:
+ fence seq_cst
+ br label %do.body
+
+do.body: ; preds = %do.cond, %entry
+ %indvar = phi i64 [ %indvar.next, %do.cond ], [ 0, %entry ] ; <i64> [#uses=3]
+ %tmp = mul i64 %indvar, 2 ; <i64> [#uses=1]
+ %arrayidx = getelementptr [40 x i32]* @A, i64 0, i64 %tmp ; <i32*> [#uses=1]
+ %i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
+ br label %do.cond
+
+do.cond: ; preds = %do.body
+ store i32 %i.0, i32* %arrayidx
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=2]
+ %exitcond = icmp ne i64 %indvar.next, 20 ; <i1> [#uses=1]
+ br i1 %exitcond, label %do.body, label %do.end
+
+do.end: ; preds = %do.cond
+ fence seq_cst
+ ret void
+}
+
+define i32 @main() nounwind {
+entry:
+ call void @single_do_loop_scev_replace()
+ %tmp = load %struct._IO_FILE** @stdout ; <%struct._IO_FILE*> [#uses=1]
+ %tmp1 = load i32* getelementptr inbounds ([40 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
+ %call = call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf(%struct._IO_FILE* %tmp, i8* getelementptr inbounds ([11 x i8]* @.str, i32 0, i32 0), i32 %tmp1) ; <i32> [#uses=0]
+ %tmp2 = load i32* getelementptr inbounds ([40 x i32]* @A, i32 0, i64 38) ; <i32> [#uses=1]
+ %cmp = icmp eq i32 %tmp2, 19 ; <i1> [#uses=1]
+ br i1 %cmp, label %if.then, label %if.else
+
+if.then: ; preds = %entry
+ br label %return
+
+if.else: ; preds = %entry
+ br label %return
+
+return: ; preds = %if.else, %if.then
+ %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
+ ret i32 %retval.0
+}
+
+declare i32 @fprintf(%struct._IO_FILE*, i8*, ...)
+
+; CHECK: for (int c1 = 0; c1 <= 19; c1 += 1)
+; CHECK: Stmt_do_cond(c1);
+
+
diff --git a/polly/test/Isl/CodeGen/single_loop.ll b/polly/test/Isl/CodeGen/single_loop.ll
new file mode 100644
index 0000000..4add7d3
--- /dev/null
+++ b/polly/test/Isl/CodeGen/single_loop.ll
@@ -0,0 +1,85 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
+
+;#include <string.h>
+;#define N 1024
+;
+;int main () {
+; int i;
+; int A[N];
+;
+; memset(A, 0, sizeof(int) * N);
+;
+; for (i = 0; i < N; i++) {
+; A[i] = 1;
+; }
+;
+; for (i = 0; i < N; i++)
+; if (A[i] != 1)
+; return 1;
+;
+; return 0;
+;}
+;
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define i32 @main() nounwind {
+entry:
+ %A = alloca [1024 x i32], align 4 ; <[1024 x i32]*> [#uses=3]
+ %arraydecay = getelementptr inbounds [1024 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
+ %conv = bitcast i32* %arraydecay to i8* ; <i8*> [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %conv, i8 0, i64 4096, i32 1, i1 false)
+ br label %for.cond
+
+for.cond: ; preds = %for.inc, %entry
+ %indvar1 = phi i64 [ %indvar.next2, %for.inc ], [ 0, %entry ] ; <i64> [#uses=3]
+ %arrayidx = getelementptr [1024 x i32]* %A, i64 0, i64 %indvar1 ; <i32*> [#uses=1]
+ %exitcond = icmp ne i64 %indvar1, 1024 ; <i1> [#uses=1]
+ br i1 %exitcond, label %for.body, label %for.end
+
+for.body: ; preds = %for.cond
+ store i32 1, i32* %arrayidx
+ br label %for.inc
+
+for.inc: ; preds = %for.body
+ %indvar.next2 = add i64 %indvar1, 1 ; <i64> [#uses=1]
+ br label %for.cond
+
+for.end: ; preds = %for.cond
+ br label %for.cond5
+
+for.cond5: ; preds = %for.inc17, %for.end
+ %indvar = phi i64 [ %indvar.next, %for.inc17 ], [ 0, %for.end ] ; <i64> [#uses=3]
+ %arrayidx13 = getelementptr [1024 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=1]
+ %i.1 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
+ %cmp7 = icmp slt i32 %i.1, 1024 ; <i1> [#uses=1]
+ br i1 %cmp7, label %for.body9, label %for.end20
+
+for.body9: ; preds = %for.cond5
+ %tmp14 = load i32* %arrayidx13 ; <i32> [#uses=1]
+ %cmp15 = icmp ne i32 %tmp14, 1 ; <i1> [#uses=1]
+ br i1 %cmp15, label %if.then, label %if.end
+
+if.then: ; preds = %for.body9
+ br label %return
+
+if.end: ; preds = %for.body9
+ br label %for.inc17
+
+for.inc17: ; preds = %if.end
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %for.cond5
+
+for.end20: ; preds = %for.cond5
+ br label %return
+
+return: ; preds = %for.end20, %if.then
+ %retval.0 = phi i32 [ 1, %if.then ], [ 0, %for.end20 ] ; <i32> [#uses=1]
+ ret i32 %retval.0
+}
+
+declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+
+; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1)
+; CHECK: Stmt_for_body(c1);
diff --git a/polly/test/Isl/CodeGen/single_loop_int_max_iterations.ll b/polly/test/Isl/CodeGen/single_loop_int_max_iterations.ll
new file mode 100644
index 0000000..52ce1c3
--- /dev/null
+++ b/polly/test/Isl/CodeGen/single_loop_int_max_iterations.ll
@@ -0,0 +1,72 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze -S < %s | FileCheck %s
+
+;#define N 20
+;#include "limits.h"
+;
+;int main () {
+; int i;
+; int A[N];
+;
+; A[0] = 0;
+;
+; __sync_synchronize();
+;
+; for (i = 0; i < INT_MAX; i++)
+; A[0] = i;
+;
+; __sync_synchronize();
+;
+; if (A[0] == INT_MAX - 1)
+; return 0;
+; else
+; return 1;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define i32 @main() nounwind {
+entry:
+ %A = alloca [20 x i32], align 4 ; <[20 x i32]*> [#uses=3]
+ %arraydecay = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
+ %arrayidx = getelementptr inbounds i32* %arraydecay, i64 0 ; <i32*> [#uses=1]
+ store i32 0, i32* %arrayidx
+ fence seq_cst
+ br label %for.cond
+
+for.cond: ; preds = %for.inc, %entry
+ %0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ] ; <i32> [#uses=3]
+ %exitcond = icmp ne i32 %0, 2147483647 ; <i1> [#uses=1]
+ br i1 %exitcond, label %for.body, label %for.end
+
+for.body: ; preds = %for.cond
+ %arraydecay2 = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
+ %arrayidx3 = getelementptr inbounds i32* %arraydecay2, i64 0 ; <i32*> [#uses=1]
+ store i32 %0, i32* %arrayidx3
+ br label %for.inc
+
+for.inc: ; preds = %for.body
+ %inc = add nsw i32 %0, 1 ; <i32> [#uses=1]
+ br label %for.cond
+
+for.end: ; preds = %for.cond
+ fence seq_cst
+ %arraydecay5 = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
+ %arrayidx6 = getelementptr inbounds i32* %arraydecay5, i64 0 ; <i32*> [#uses=1]
+ %tmp7 = load i32* %arrayidx6 ; <i32> [#uses=1]
+ %cmp8 = icmp eq i32 %tmp7, 2147483646 ; <i1> [#uses=1]
+ br i1 %cmp8, label %if.then, label %if.else
+
+if.then: ; preds = %for.end
+ br label %return
+
+if.else: ; preds = %for.end
+ br label %return
+
+return: ; preds = %if.else, %if.then
+ %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
+ ret i32 %retval.0
+}
+
+; CHECK: for (int c1 = 0; c1 <= 2147483646; c1 += 1)
+; CHECK: Stmt_for_body(c1);
diff --git a/polly/test/Isl/CodeGen/single_loop_ll_max_iterations.ll b/polly/test/Isl/CodeGen/single_loop_ll_max_iterations.ll
new file mode 100644
index 0000000..4aad4c8
--- /dev/null
+++ b/polly/test/Isl/CodeGen/single_loop_ll_max_iterations.ll
@@ -0,0 +1,72 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze -S < %s | FileCheck %s
+
+;#include "limits.h"
+;#define N 20
+;
+;int main () {
+; long long i;
+; long long A[N];
+;
+; A[0] = 0;
+;
+; __sync_synchronize();
+;
+; for (i = 0; i < LLONG_MAX; i++)
+; A[0] = i;
+;
+; __sync_synchronize();
+;
+; if (A[0] == LLONG_MAX - 1)
+; return 0;
+; else
+; return 1;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define i32 @main() nounwind {
+entry:
+ %A = alloca [20 x i64], align 8 ; <[20 x i64]*> [#uses=3]
+ %arraydecay = getelementptr inbounds [20 x i64]* %A, i32 0, i32 0 ; <i64*> [#uses=1]
+ %arrayidx = getelementptr inbounds i64* %arraydecay, i64 0 ; <i64*> [#uses=1]
+ store i64 0, i64* %arrayidx
+ fence seq_cst
+ br label %for.cond
+
+for.cond: ; preds = %for.inc, %entry
+ %0 = phi i64 [ 0, %entry ], [ %inc, %for.inc ] ; <i64> [#uses=3]
+ %exitcond = icmp ne i64 %0, 9223372036854775807 ; <i1> [#uses=1]
+ br i1 %exitcond, label %for.body, label %for.end
+
+for.body: ; preds = %for.cond
+ %arraydecay2 = getelementptr inbounds [20 x i64]* %A, i32 0, i32 0 ; <i64*> [#uses=1]
+ %arrayidx3 = getelementptr inbounds i64* %arraydecay2, i64 0 ; <i64*> [#uses=1]
+ store i64 %0, i64* %arrayidx3
+ br label %for.inc
+
+for.inc: ; preds = %for.body
+ %inc = add nsw i64 %0, 1 ; <i64> [#uses=1]
+ br label %for.cond
+
+for.end: ; preds = %for.cond
+ fence seq_cst
+ %arraydecay5 = getelementptr inbounds [20 x i64]* %A, i32 0, i32 0 ; <i64*> [#uses=1]
+ %arrayidx6 = getelementptr inbounds i64* %arraydecay5, i64 0 ; <i64*> [#uses=1]
+ %tmp7 = load i64* %arrayidx6 ; <i64> [#uses=1]
+ %cmp8 = icmp eq i64 %tmp7, 9223372036854775806 ; <i1> [#uses=1]
+ br i1 %cmp8, label %if.then, label %if.else
+
+if.then: ; preds = %for.end
+ br label %return
+
+if.else: ; preds = %for.end
+ br label %return
+
+return: ; preds = %if.else, %if.then
+ %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
+ ret i32 %retval.0
+}
+
+; CHECK: for (int c1 = 0; c1 <= 9223372036854775806; c1 += 1)
+; CHECK: Stmt_for_body(c1);
diff --git a/polly/test/Isl/CodeGen/single_loop_one_iteration.ll b/polly/test/Isl/CodeGen/single_loop_one_iteration.ll
new file mode 100644
index 0000000..32b1289c
--- /dev/null
+++ b/polly/test/Isl/CodeGen/single_loop_one_iteration.ll
@@ -0,0 +1,69 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
+
+;#define N 20
+;
+;int main () {
+; int i;
+; int A[N];
+;
+; A[0] = 0;
+;
+; __sync_synchronize();
+;
+; for (i = 0; i < 1; i++)
+; A[i] = 1;
+;
+; __sync_synchronize();
+;
+; if (A[0] == 1)
+; return 0;
+; else
+; return 1;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define i32 @main() nounwind {
+entry:
+ %A = alloca [20 x i32], align 4 ; <[20 x i32]*> [#uses=3]
+ %arraydecay = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
+ %arrayidx = getelementptr inbounds i32* %arraydecay, i64 0 ; <i32*> [#uses=1]
+ store i32 0, i32* %arrayidx
+ fence seq_cst
+ br label %for.cond
+
+for.cond: ; preds = %for.inc, %entry
+ %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ] ; <i64> [#uses=3]
+ %arrayidx3 = getelementptr [20 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=1]
+ %exitcond = icmp ne i64 %indvar, 1 ; <i1> [#uses=1]
+ br i1 %exitcond, label %for.body, label %for.end
+
+for.body: ; preds = %for.cond
+ store i32 1, i32* %arrayidx3
+ br label %for.inc
+
+for.inc: ; preds = %for.body
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %for.cond
+
+for.end: ; preds = %for.cond
+ fence seq_cst
+ %arraydecay5 = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
+ %arrayidx6 = getelementptr inbounds i32* %arraydecay5, i64 0 ; <i32*> [#uses=1]
+ %tmp7 = load i32* %arrayidx6 ; <i32> [#uses=1]
+ %cmp8 = icmp eq i32 %tmp7, 1 ; <i1> [#uses=1]
+ br i1 %cmp8, label %if.then, label %if.else
+
+if.then: ; preds = %for.end
+ br label %return
+
+if.else: ; preds = %for.end
+ br label %return
+
+return: ; preds = %if.else, %if.then
+ %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
+ ret i32 %retval.0
+}
+
+; CHECK: Stmt_for_body(0);
diff --git a/polly/test/Isl/CodeGen/single_loop_param.ll b/polly/test/Isl/CodeGen/single_loop_param.ll
new file mode 100644
index 0000000..570fe03
--- /dev/null
+++ b/polly/test/Isl/CodeGen/single_loop_param.ll
@@ -0,0 +1,71 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-pc-linux-gnu"
+
+@A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=3]
+
+define void @bar(i64 %n) nounwind {
+bb:
+ fence seq_cst
+ br label %bb1
+
+bb1: ; preds = %bb3, %bb
+ %i.0 = phi i64 [ 0, %bb ], [ %tmp, %bb3 ] ; <i64> [#uses=3]
+ %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %i.0 ; <i32*> [#uses=1]
+ %exitcond = icmp ne i64 %i.0, %n ; <i1> [#uses=1]
+ br i1 %exitcond, label %bb2, label %bb4
+
+bb2: ; preds = %bb1
+ store i32 1, i32* %scevgep
+ br label %bb3
+
+bb3: ; preds = %bb2
+ %tmp = add nsw i64 %i.0, 1 ; <i64> [#uses=1]
+ br label %bb1
+
+bb4: ; preds = %bb1
+ fence seq_cst
+ ret void
+}
+
+define i32 @main() nounwind {
+bb:
+ call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
+ call void @bar(i64 1024)
+ br label %bb1
+
+bb1: ; preds = %bb7, %bb
+ %indvar = phi i64 [ %indvar.next, %bb7 ], [ 0, %bb ] ; <i64> [#uses=3]
+ %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=1]
+ %i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
+ %tmp = icmp slt i32 %i.0, 1024 ; <i1> [#uses=1]
+ br i1 %tmp, label %bb2, label %bb8
+
+bb2: ; preds = %bb1
+ %tmp3 = load i32* %scevgep ; <i32> [#uses=1]
+ %tmp4 = icmp ne i32 %tmp3, 1 ; <i1> [#uses=1]
+ br i1 %tmp4, label %bb5, label %bb6
+
+bb5: ; preds = %bb2
+ br label %bb9
+
+bb6: ; preds = %bb2
+ br label %bb7
+
+bb7: ; preds = %bb6
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %bb1
+
+bb8: ; preds = %bb1
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb5
+ %.0 = phi i32 [ 1, %bb5 ], [ 0, %bb8 ] ; <i32> [#uses=1]
+ ret i32 %.0
+}
+
+declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+
+; CHECK: for (int c1 = 0; c1 < n; c1 += 1)
+; CHECK: Stmt_bb2(c1);
+
diff --git a/polly/test/Isl/CodeGen/single_loop_zero_iterations.ll b/polly/test/Isl/CodeGen/single_loop_zero_iterations.ll
new file mode 100644
index 0000000..23354ff
--- /dev/null
+++ b/polly/test/Isl/CodeGen/single_loop_zero_iterations.ll
@@ -0,0 +1,70 @@
+; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze -S < %s | FileCheck %s
+
+;#define N 20
+;
+;int main () {
+; int i;
+; int A[N];
+;
+; A[0] = 0;
+;
+; __sync_synchronize();
+;
+; for (i = 0; i < 0; i++)
+; A[i] = 1;
+;
+; __sync_synchronize();
+;
+; if (A[0] == 0)
+; return 0;
+; else
+; return 1;
+;}
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define i32 @main() nounwind {
+entry:
+ %A = alloca [20 x i32], align 4 ; <[20 x i32]*> [#uses=3]
+ %arraydecay = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
+ %arrayidx = getelementptr inbounds i32* %arraydecay, i64 0 ; <i32*> [#uses=1]
+ store i32 0, i32* %arrayidx
+ fence seq_cst
+ br label %for.cond
+
+for.cond: ; preds = %for.inc, %entry
+ %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ] ; <i64> [#uses=2]
+ %arrayidx3 = getelementptr [20 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=1]
+ br i1 false, label %for.body, label %for.end
+
+for.body: ; preds = %for.cond
+ store i32 1, i32* %arrayidx3
+ br label %for.inc
+
+for.inc: ; preds = %for.body
+ %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
+ br label %for.cond
+
+for.end: ; preds = %for.cond
+ fence seq_cst
+ %arraydecay5 = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
+ %arrayidx6 = getelementptr inbounds i32* %arraydecay5, i64 0 ; <i32*> [#uses=1]
+ %tmp7 = load i32* %arrayidx6 ; <i32> [#uses=1]
+ %cmp8 = icmp eq i32 %tmp7, 0 ; <i1> [#uses=1]
+ br i1 %cmp8, label %if.then, label %if.else
+
+if.then: ; preds = %for.end
+ br label %return
+
+if.else: ; preds = %for.end
+ br label %return
+
+return: ; preds = %if.else, %if.then
+ %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
+ ret i32 %retval.0
+}
+
+; CHECK: for region: 'for.cond => for.end.region' in function 'main':
+; CHECK-NEXT: main():
+; CHECK-NEXT: Stmt_for_body(0);
diff --git a/polly/test/Isl/CodeGen/split_edges.ll b/polly/test/Isl/CodeGen/split_edges.ll
new file mode 100644
index 0000000..a166b76
--- /dev/null
+++ b/polly/test/Isl/CodeGen/split_edges.ll
@@ -0,0 +1,34 @@
+; RUN: opt %loadPolly -polly-codegen-isl -verify-region-info -verify-dom-info -S < %s | FileCheck %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-pc-linux-gnu"
+
+define void @loop_with_condition() nounwind {
+bb0:
+ fence seq_cst
+ br label %bb1
+
+bb1:
+ br i1 true, label %bb2, label %bb3
+
+bb2:
+ %ind1 = phi i32 [0, %bb1], [ %inc1, %bb2]
+ %inc1 = add i32 %ind1, 1
+ %cond1 = icmp eq i32 %ind1, 32
+ br i1 %cond1, label %bb4, label %bb2
+
+bb3:
+ %ind2 = phi i32 [0, %bb1], [ %inc2, %bb3]
+ %inc2 = add i32 %ind2, 1
+ br i1 true, label %bb4, label %bb3
+
+bb4:
+ br label %bb5
+
+bb5:
+ fence seq_cst
+ ret void
+
+}
+
+; CHECK: polly.split_new_and_old
+; CHECK: polly.merge_new_and_old
diff --git a/polly/test/Isl/CodeGen/split_edges_2.ll b/polly/test/Isl/CodeGen/split_edges_2.ll
new file mode 100644
index 0000000..dc56e88
--- /dev/null
+++ b/polly/test/Isl/CodeGen/split_edges_2.ll
@@ -0,0 +1,33 @@
+; RUN: opt %loadPolly -polly-codegen-isl -verify-region-info -verify-dom-info -S < %s | FileCheck %s
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-pc-linux-gnu"
+
+define void @loop_with_condition() nounwind {
+bb0:
+ fence seq_cst
+ br label %bb1
+
+bb1:
+ br label %bb2
+
+bb2:
+ %ind1 = phi i32 [0, %bb1], [ %inc1, %bb2]
+ %inc1 = add i32 %ind1, 1
+ %cond1 = icmp eq i32 %ind1, 32
+ br i1 %cond1, label %bb4, label %bb2
+
+bb4:
+ br label %bb5
+
+bb5:
+ fence seq_cst
+ ret void
+
+}
+
+; CHECK: polly.split_new_and_old
+; CHECK: polly.merge_new_and_old
+
+
+
diff --git a/polly/test/IslCodeGen/single_loop_param_less_equal.ll b/polly/test/Isl/single_loop_param_less_equal.ll
index 45442b8..45442b8 100644
--- a/polly/test/IslCodeGen/single_loop_param_less_equal.ll
+++ b/polly/test/Isl/single_loop_param_less_equal.ll
diff --git a/polly/test/IslCodeGen/single_loop_param_less_than.ll b/polly/test/Isl/single_loop_param_less_than.ll
index 25a4438..25a4438 100644
--- a/polly/test/IslCodeGen/single_loop_param_less_than.ll
+++ b/polly/test/Isl/single_loop_param_less_than.ll