On Thu, Sep 14, 2017 at 5:02 PM, Bin Cheng <bin.ch...@arm.com> wrote: > Hi, > Current pcom implementation rewrites into lcssa form after all loops are > transformed, this is > not enough because unrolling of later loop checks lcssa form in function > tree_transform_and_unroll_loop. > This simple patch rewrites loop into lcssa form if store-store chain is > handled. I think it doesn't > affect compilation time since rewrite_into_loop_closed_ssa_1 is only called > for store-store chain > transformation and only the transformed loop is rewritten.
Well, it may look like only the transformed loop is rewritten -- yes, it is, but rewrite_into_loop_closed_ssa calls update_ssa () which operates on the whole function. So I'd rather _not_ do this. Is there a real problem or is it just the overly aggressive checking done? IMHO we should remove the checking or pass in a param whether to skip the checking. Or even better, restrict the checking to those loops trans_form_and_unroll actually touches. Richard. > Bootstrap and test ongoing on x86_64. is it OK if no failures? > > Thanks, > bin > 2017-09-14 Bin Cheng <bin.ch...@arm.com> > > PR tree-optimization/82163 > * tree-predcom.c (tree_predictive_commoning_loop): Rewrite into > loop closed ssa instantly. Return boolean true if loop is unrolled. > (tree_predictive_commoning): Return TODO_cleanup_cfg if loop is > unrolled. > > gcc/testsuite > 2017-09-14 Bin Cheng <bin.ch...@arm.com> > > PR tree-optimization/82163 > * gcc.dg/tree-ssa/pr82163.c: New test.