1; RUN: opt -S -loop-vectorize < %s | FileCheck %s
2target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
3
4; Check that we vectorize only bottom-tested loops.
5; This is a reduced testcase from PR21302.
6;
7; rdar://problem/18886083
8
9%struct.X = type { i32, i16 }
10; CHECK-LABEL: @foo(
11; CHECK-NOT: vector.body
12
13define void @foo(i32 %n) {
14entry:
15  br label %for.cond
16
17for.cond:
18  %i = phi i32 [ 0, %entry ], [ %inc, %for.body ]
19  %cmp = icmp slt i32 %i, %n
20  br i1 %cmp, label %for.body, label %if.end
21
22for.body:
23  %iprom = sext i32 %i to i64
24  %b = getelementptr inbounds %struct.X* undef, i64 %iprom, i32 1
25  store i16 0, i16* %b, align 4
26  %inc = add nsw i32 %i, 1
27  br label %for.cond
28
29if.end:
30  ret void
31}
32