; REQUIRES: asserts ; RUN: not --crash opt -mtriple=x86_64 -mattr=-avx,-avx2,-avx512f,+sse,-sse2,-sse3,-sse4.2 -passes=loop-vectorize -S < %s ; RUN: not --crash opt -mtriple=x86_64 -mattr=-avx,-avx2,-avx512f,+sse,-sse2,-sse3,-sse4.2 -passes=loop-vectorize -force-vector-width=4 -S < %s @h = global i64 0 define void @test(ptr %p) { entry: br label %for.body for.body: %idx.ext.merge = phi i64 [ 1, %entry ], [ %idx, %for.body ] %inc.merge = phi i16 [ 1, %entry ], [ %inc, %for.body ] %idx.merge = phi i64 [ 0, %entry ], [ %idx.ext.merge, %for.body ] %add = shl i64 %idx.merge, 1 %arrayidx = getelementptr i64, ptr %p, i64 %add store i64 0, ptr %arrayidx %inc = add i16 %inc.merge, 1 %idx = zext i16 %inc to i64 %gep = getelementptr i64, ptr %p, i64 %idx %cmp = icmp ugt ptr %gep, @h br i1 %cmp, label %exit, label %for.body exit: ret void }