1; RUN: opt -loop-vectorize -force-vector-width=2 -S < %s 2; 3; Cleaned up version of fe_tools.all_dimensions.ll from PR36311. 4; Forcing VF=2 to trigger vector code gen 5; 6; This is a test case that let's vectorizer's code gen to modify CFG and get 7; DomTree out of date, such that an assert from SCEV would trigger if 8; reanalysis of SCEV happens subsequently. Once vector code gen starts, 9; vectorizer should not invoke recomputation of Analysis. 10 11$test = comdat any 12 13declare i32 @__gxx_personality_v0(...) 14 15; Function Attrs: uwtable 16define dso_local void @test() local_unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { 17entry: 18 br label %for.body51 19 20for.body51: ; preds = %for.body51, %entry 21 br i1 undef, label %for.body51, label %for.body89.lr.ph 22 23for.cond80.loopexit: ; preds = %for.body89 24 %inc94.lcssa = phi i32 [ %inc94, %for.body89 ] 25 br i1 undef, label %for.body89.lr.ph, label %nrvo.skipdtor.loopexit 26 27for.body89.lr.ph: ; preds = %for.cond80.loopexit, %for.body51 28 %i79.0179 = phi i32 [ %add90, %for.cond80.loopexit ], [ 0, %for.body51 ] 29 %next_index.4178 = phi i32 [ %inc94.lcssa, %for.cond80.loopexit ], [ undef, %for.body51 ] 30 %add90 = add nuw i32 %i79.0179, 1 31 %mul91 = mul i32 %add90, undef 32 br label %for.body89 33 34for.body89: ; preds = %for.body89, %for.body89.lr.ph 35 %j.0175 = phi i32 [ 0, %for.body89.lr.ph ], [ %add92, %for.body89 ] 36 %next_index.5174 = phi i32 [ %next_index.4178, %for.body89.lr.ph ], [ %inc94, %for.body89 ] 37 %add92 = add nuw i32 %j.0175, 1 38 %add93 = add i32 %add92, %mul91 39 %inc94 = add i32 %next_index.5174, 1 40 %conv95 = zext i32 %next_index.5174 to i64 41 %arrayidx.i160 = getelementptr inbounds i32, i32* undef, i64 %conv95 42 store i32 %add93, i32* %arrayidx.i160, align 4 43;, !tbaa !1 44 %cmp87 = icmp ult i32 %add92, undef 45 br i1 %cmp87, label %for.body89, label %for.cond80.loopexit 46 47nrvo.skipdtor.loopexit: ; preds = %for.cond80.loopexit 48 ret void 49} 50