blob: 8cde10350bd872f5e707e3adcc9e0ffdf0ac8e9b [file] [log] [blame] [edit]
; Check that an estimated trip count of zero does not crash or otherwise break
; LoopVectorize behavior while it tries to create runtime memory checks inside
; an outer loop.
; REQUIRES: x86-registered-target
; RUN: opt -passes=loop-vectorize -S %s | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
; Look for basic signs that vectorization ran and produced memory checks.
; CHECK: @test(
; CHECK: vector.memcheck:
; CHECK: vector.body:
; CHECK: inner:
define void @test(ptr addrspace(1) %p, i32 %n) {
entry:
br label %outer
outer:
br label %inner
inner:
%i = phi i32 [ %inc, %inner ], [ 0, %outer ]
store i32 0, ptr addrspace(1) %p
%load = load i32, ptr addrspace(1) null
%inc = add i32 %i, 1
%cmp = icmp slt i32 %i, %n
br i1 %cmp, label %inner, label %outer.latch
outer.latch:
br i1 %cmp, label %outer, label %exit, !llvm.loop !0
exit:
ret void
}
!0 = distinct !{!0, !1}
!1 = !{!"llvm.loop.estimated_trip_count", i32 0}