1*35f70200SMichael Kruse; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST 2*35f70200SMichael Kruse; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR 3*35f70200SMichael Kruse 4*35f70200SMichael Kruse 5*35f70200SMichael Kruse; - Test the case where scalar evolution references a loop that is outside 6*35f70200SMichael Kruse; of the scop, but does not contain the scop. 7*35f70200SMichael Kruse 8*35f70200SMichael Kruse; AST: { 9*35f70200SMichael Kruse; AST-NEXT: #pragma simd 10*35f70200SMichael Kruse; AST-NEXT: #pragma omp parallel for 11*35f70200SMichael Kruse; AST-NEXT: for (int c0 = 0; c0 < -p_0 + symbol; c0 += 1) 12*35f70200SMichael Kruse; AST-NEXT: Stmt_while_body(c0); 13*35f70200SMichael Kruse; AST-NEXT: if (p_0 >= symbol) 14*35f70200SMichael Kruse; AST-NEXT: Stmt_while_body(0); 15*35f70200SMichael Kruse; AST-NEXT: } 16*35f70200SMichael Kruse 17*35f70200SMichael Kruse; IR: @update_model_polly_subfn 18*35f70200SMichael Kruse; IR-NOT: @update_model_polly_subfn_1 19*35f70200SMichael Kruse 20*35f70200SMichael Krusetarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 21*35f70200SMichael Kruse 22*35f70200SMichael Kruse@cum_freq = external global [258 x i64], align 16 23*35f70200SMichael Kruse 24*35f70200SMichael Krusedefine void @update_model(i64 %symbol) { 25*35f70200SMichael Kruseentry: 26*35f70200SMichael Kruse br label %for.one 27*35f70200SMichael Kruse 28*35f70200SMichael Krusefor.one: 29*35f70200SMichael Kruse %i.1 = phi i64 [ %dec07, %for.one ], [ %symbol, %entry ] 30*35f70200SMichael Kruse %dec07 = add nsw i64 %i.1, -1 31*35f70200SMichael Kruse br i1 undef, label %for.one, label %while.body 32*35f70200SMichael Kruse 33*35f70200SMichael Krusewhile.body: 34*35f70200SMichael Kruse %indvar = phi i64 [ %sub42, %while.body ], [ %i.1, %for.one ] 35*35f70200SMichael Kruse %sub42 = add nsw i64 %indvar, -1 36*35f70200SMichael Kruse %arrayidx44 = getelementptr inbounds [258 x i64], [258 x i64]* @cum_freq, i64 0, i64 %sub42 37*35f70200SMichael Kruse store i64 1, i64* %arrayidx44, align 4 38*35f70200SMichael Kruse %cmp40 = icmp sgt i64 %sub42, 0 39*35f70200SMichael Kruse br i1 %cmp40, label %while.body, label %while.end 40*35f70200SMichael Kruse 41*35f70200SMichael Krusewhile.end: 42*35f70200SMichael Kruse ret void 43*35f70200SMichael Kruse} 44