47 lines
1.6 KiB
LLVM
47 lines
1.6 KiB
LLVM
; RUN: opt -passes=loop-vectorize -force-vector-width=2 -S < %s
|
|
;
|
|
; Cleaned up version of fe_tools.all_dimensions.ll from PR36311.
|
|
; Forcing VF=2 to trigger vector code gen
|
|
;
|
|
; This is a test case that let's vectorizer's code gen to modify CFG and get
|
|
; DomTree out of date, such that an assert from SCEV would trigger if
|
|
; reanalysis of SCEV happens subsequently. Once vector code gen starts,
|
|
; vectorizer should not invoke recomputation of Analysis.
|
|
|
|
$test = comdat any
|
|
|
|
define void @test(ptr %p, i1 %arg) {
|
|
entry:
|
|
br label %for.body51
|
|
|
|
for.body51:
|
|
br i1 %arg, label %for.body51, label %for.body89.lr.ph
|
|
|
|
for.cond80.loopexit:
|
|
%inc94.lcssa = phi i32 [ %inc94, %for.body89 ]
|
|
br i1 %arg, label %for.body89.lr.ph, label %nrvo.skipdtor.loopexit
|
|
|
|
for.body89.lr.ph:
|
|
%i79.0179 = phi i32 [ %add90, %for.cond80.loopexit ], [ 0, %for.body51 ]
|
|
%next_index.4178 = phi i32 [ %inc94.lcssa, %for.cond80.loopexit ], [ 0, %for.body51 ]
|
|
%add90 = add nuw i32 %i79.0179, 1
|
|
%mul91 = mul i32 %add90, 7
|
|
br label %for.body89
|
|
|
|
for.body89:
|
|
%j.0175 = phi i32 [ 0, %for.body89.lr.ph ], [ %add92, %for.body89 ]
|
|
%next_index.5174 = phi i32 [ %next_index.4178, %for.body89.lr.ph ], [ %inc94, %for.body89 ]
|
|
%add92 = add nuw i32 %j.0175, 1
|
|
%add93 = add i32 %add92, %mul91
|
|
%inc94 = add i32 %next_index.5174, 1
|
|
%conv95 = zext i32 %next_index.5174 to i64
|
|
%arrayidx.i160 = getelementptr inbounds i32, ptr %p, i64 %conv95
|
|
store i32 %add93, ptr %arrayidx.i160, align 4
|
|
;, !tbaa !1
|
|
%cmp87 = icmp ult i32 %add92, 123
|
|
br i1 %cmp87, label %for.body89, label %for.cond80.loopexit
|
|
|
|
nrvo.skipdtor.loopexit:
|
|
ret void
|
|
}
|