lihuang added a comment. Hi Adam,
The change in http://reviews.llvm.org/D18777 breaks this test becasue it converts some sexts to zexts, which cannot be eliminated by indvar-simplification after widening IV. The IR after indvar-simplification and before loop-vectorization is like: ... %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ] ... add nuw nsw i64 %indvars.iv, 2 // i + 2 %12 = trunc i64 %11 to i32 %idxprom2047 = zext i32 %12 to i64 %arrayidx21 = getelementptr inbounds i32, i32* %C, i64 %idxprom2047 ... %14 = add nuw nsw i64 %indvars.iv, 3 // i + 3 %15 = trunc i64 %14 to i32 %idxprom2448 = zext i32 %15 to i64 ... IV is promoted to 64-bit but the trunc/zext cannot be eliminated (at least cannot be eliminated with the -O1 pass pipeline). Then optimzation remark becomes: optimization-remark-options.c:17:3: remark: loop not vectorized: cannot identify array bounds [-Rpass-analysis=loop-vectorize] for (int i = 0; i < N; i++) { http://reviews.llvm.org/D21773 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits