On Fri, Sep 15, 2017 at 3:04 PM, Bin.Cheng <amker.ch...@gmail.com> wrote: > On Fri, Sep 15, 2017 at 12:49 PM, Richard Biener > <richard.guent...@gmail.com> wrote: >> 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. > I see. >> >> 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 > In this case, it's the check itself. >> 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. > Yes, will see if we can check loops only related to trans_form_and_unroll.
That would be very welcome -- it's really useful to be able to assert you didn't break LCSSA when transforming a single loop (from our generic infrastructure routines). Richard. > Thanks, > bin >> >> 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.