Jakub Jelinek <ja...@redhat.com> wrote on 21/11/2011 05:07:54 PM: > From: Jakub Jelinek <ja...@redhat.com> > To: Razya Ladelsky/Haifa/IBM@IBMIL > Cc: GCC Patches <gcc-patches@gcc.gnu.org>, Richard Guenther > <richard.guent...@gmail.com> > Date: 21/11/2011 05:08 PM > Subject: Re: [PATCH, take 2] Fix PR tree-optimization/49960 ,Fix > self data dependence > > On Mon, Nov 21, 2011 at 04:54:09PM +0200, Razya Ladelsky wrote: > > Although compute_affine_dependence() can't do anything meaningful for the > > gather data refs, > > it may still be assigning values to the dependence relation structure, if > > you need to use them. > > Therefore I did not skip the call to compute_self_dependence(), which > > indeed calls > > compute_affine_depepndence(). > > > > > > If you think it's redundant, we can remove it. > > It is not just redundant, but harmful. compute_affine_dependence assumes > that base and offset are simple IVs, that is not true for gather deps. > So please do remove it. > > Jakub >
Jakub, I have some non-affine cases for which compute_affine_dependence is called (as it is called for ALL dependences from compte_all_depepndences()), and no harm is done. I looked a little bit closer into the code, and this is what happens for non affine accesses: initialize_data_dependence_relation() assigns DDR_ARE_DEPENDENT (res) = chrec_dont_know for the dr. Then, compute_affine_depepndence() tests if (DDR_ARE_DEPENDENT (ddr) == NULL_TREE), and does nothing otherwise. Since the dr was initialized with chrec_dont_know, no harm is done. Anyway, since it is useless for your gather case, I'll just remove it, along with compute_self_dependence(). OK? Thanks, Razya