> > > ------------------------------------------------------------------ > Sender:Richard Biener <richard.guent...@gmail.com> > Sent At:2019 Apr. 1 (Mon.) 21:07 > Recipient:bin.cheng <bin.ch...@linux.alibaba.com> > Cc:GCC Patches <gcc-patches@gcc.gnu.org> > Subject:Re: [PATCH PR89725]Handle DR's access functions of loops not in DDR's > loop_nest > > > On Mon, Apr 1, 2019 at 5:10 AM bin.cheng <bin.ch...@linux.alibaba.com> wrote: > > > > Hi, > > > > As described in comments of PR89725, this patch fixes out-of-bound access > > during > > computing classic dist/dir vector for DDR. Basically it does two things: > > A) Handle > > relevant chrec of outer loop in multivariate access function as invariant > > symbol during > > DDR analysis; B) Bypass relevant univariate access functions. > > > > Bootstrap and test on x86_64, any comments? > > LGTM, as Jakub said elsewhere index_in_loop_nest is better written as > > static inline int > index_in_loop_nest (int var, vec<loop_p> loop_nest) > { > struct loop *loopi; > int var_index; > > for (var_index = 0; loop_nest.iterate (var_index, &loopi); > var_index++) > if (loopi->num == var) > return var_index; > > gcc_unreachable (); > } > > OK with that change.
Updated patch according to this review. Also, could anyone help me commit this please? Write-access on my system seems broken. Thanks. Thanks, bin 2019-04-01 Bin Cheng <bin.ch...@linux.alibaba.com> PR tree-optimization/89725 * tree-chrec.c (chrec_contains_symbols): New parameter. Handle outer loop's chrec as invariant symbol. * tree-chrec.h (chrec_contains_symbols): New parameter. * tree-data-ref.c (analyze_miv_subscript): Pass new argument. (build_classic_dist_vector_1, add_other_self_distances): Bypass access function of loops not in DDR's loop_nest. * tree-data-ref.h (index_in_loop_nest): Add unreachable check. 2018-04-01 Bin Cheng <bin.ch...@linux.alibaba.com> PR tree-optimization/89725 * gcc/testsuite/gcc.dg/tree-ssa/pr89725.c: New test.
0001-pr89725.patch
Description: Binary data