On Wed, Oct 19, 2016 at 12:38 PM, Bin Cheng <bin.ch...@arm.com> wrote: > Hi, > This is the patch fixing spec mis-compare issue reported in PR78005. In the > original patch, boundary condition was mis-handled when generating guard > checking if vectorized/scalar loop should be preferred. This isn't an issue > in general, but in cases we need to peel for gaps, as well as skipping branch > of epilogue loop can be optimized out, it could result in more iterations > being executed. That's why the mis-compare issue happens. This patch > corrects the bug, also cleans up existing code that computes loop niters and > its upper bound. The refactoring improves niters bound information for > epilogue loop, thus the patch adjusts related tests. An execution test is > also added. > > With the patch, mis-compare issue is fixed. Bootstrap and test on x86_64 and > AArch64. Is it OK?
Ok. Thanks, Richard. > Thanks, > bin > > 2016-10-18 Bin Cheng <bin.ch...@arm.com> > > PR tree-optimization/78005 > * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Compute > upper (included) bound for niters of prolog loop. > (vect_gen_scalar_loop_niters): Change parameter VF to VFM1. > Compute niters of scalar loop above which vectorized loop is > preferred, as well as the upper (included) bound for the niters. > (vect_do_peeling): Record niter bound for loops accordingly. > > gcc/testsuite/ChangeLog > 2016-10-18 Bin Cheng <bin.ch...@arm.com> > > PR tree-optimization/78005 > * gcc.dg/vect/pr78005.c: New. > * gcc.target/i386/l_fma_float_1.c: Revise test. > * gcc.target/i386/l_fma_float_2.c: Ditto. > * gcc.target/i386/l_fma_float_3.c: Ditto. > * gcc.target/i386/l_fma_float_4.c: Ditto. > * gcc.target/i386/l_fma_float_5.c: Ditto. > * gcc.target/i386/l_fma_float_6.c: Ditto. > * gcc.target/i386/l_fma_double_1.c: Ditto. > * gcc.target/i386/l_fma_double_2.c: Ditto. > * gcc.target/i386/l_fma_double_3.c: Ditto. > * gcc.target/i386/l_fma_double_4.c: Ditto. > * gcc.target/i386/l_fma_double_5.c: Ditto. > * gcc.target/i386/l_fma_double_6.c: Ditto.