1; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s 2; 3; Partial write of a (mapped) scalar in a non-affine subregion. 4; 5; for (int j = 0; j < n; j += 1) { 6;subregion: 7; val = 21.0 + 21.0; 8; if (undef > undef) 9;subregion_true: ; 10; 11;subregion_exit: 12; if (j >= 5) 13;user: 14; A[0] = val; 15; } 16 17define void @partial_write_mapped_scalar_subregion(i32 %n, ptr noalias nonnull %A) { 18entry: 19 br label %for 20 21for: 22 %j = phi i32 [0, %entry], [%j.inc, %inc] 23 %j.cmp = icmp slt i32 %j, %n 24 br i1 %j.cmp, label %subregion, label %exit 25 26 subregion: 27 %val = fadd double 21.0, 21.0 28 %nonaffine.cond = fcmp ogt double undef, undef 29 br i1 %nonaffine.cond, label %subregion_true, label %subregion_exit 30 31 subregion_true: 32 br label %subregion_exit 33 34 subregion_exit: 35 %if.cond = icmp sgt i32 %j, 5 36 br i1 %if.cond, label %user, label %inc 37 38 user: 39 store double %val, ptr %A 40 br label %inc 41 42inc: 43 %j.inc = add nuw nsw i32 %j, 1 44 br label %for 45 46exit: 47 br label %return 48 49return: 50 ret void 51} 52 53 54; CHECK-LABEL: polly.stmt.subregion_exit.exit: 55; CHECK-NEXT: %1 = icmp sge i64 %polly.indvar, 5 56; CHECK-NEXT: %polly.Stmt_subregion__TO__subregion_exit_Write0.cond = icmp ne i1 %1, false 57; CHECK-NEXT: br i1 %polly.Stmt_subregion__TO__subregion_exit_Write0.cond, label %polly.stmt.subregion_exit.exit.Stmt_subregion__TO__subregion_exit_Write0.partial, label %polly.stmt.subregion_exit.exit.cont 58 59; CHECK-LABEL: polly.stmt.subregion_exit.exit.Stmt_subregion__TO__subregion_exit_Write0.partial: 60; CHECK-NEXT: %polly.access.A = getelementptr double, ptr %A, i64 1 61; CHECK-NEXT: store double %p_val, ptr %polly.access.A 62; CHECK-NEXT: br label %polly.stmt.subregion_exit.exit.cont 63 64; CHECK-LABEL: polly.stmt.subregion_exit.exit.cont: 65