[Bug tree-optimization/102155] LIM fill_always_executed_in handles contains_call incorrectly

2021-09-02 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102155

Richard Biener  changed:

   What|Removed |Added

 Resolution|--- |INVALID
 Status|ASSIGNED|RESOLVED

--- Comment #2 from Richard Biener  ---
It seems I was mistaken, get_loop_body_in_dom_order seems to exactly care for
this specific case.

[Bug tree-optimization/102155] LIM fill_always_executed_in handles contains_call incorrectly

2021-09-01 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102155

--- Comment #1 from CVS Commits  ---
The master branch has been updated by Richard Biener :

https://gcc.gnu.org/g:f482bf2af86990329b4df660f8c1eb9e094de9f9

commit r12-3307-gf482bf2af86990329b4df660f8c1eb9e094de9f9
Author: Richard Biener 
Date:   Wed Sep 1 09:51:45 2021 +0200

tree-optimization/102155 - fix LIM fill_always_executed_in CFG walk

This fixes the CFG walk order of fill_always_executed_in to use
RPO oder rather than the dominator based order computed by
get_loop_body_in_dom_order.  That fixes correctness issues with
unordered dominator children.

The RPO order computed by rev_post_order_and_mark_dfs_back_seme in
its for-iteration mode is a good match for the algorithm.

2021-09-01  Richard Biener  

PR tree-optimization/102155
* tree-ssa-loop-im.c (fill_always_executed_in_1): Iterate
over a part of the RPO array and do not recurse here.
Dump blocks marked as always executed.
(fill_always_executed_in): Walk over the RPO array and
process loops whose header we run into.
(loop_invariant_motion_in_fun): Compute the first RPO
using rev_post_order_and_mark_dfs_back_seme in iteration
order and pass that to fill_always_executed_in.

[Bug tree-optimization/102155] LIM fill_always_executed_in handles contains_call incorrectly

2021-09-01 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102155

Richard Biener  changed:

   What|Removed |Added

   Last reconfirmed||2021-09-01
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
 Status|UNCONFIRMED |ASSIGNED
 Ever confirmed|0   |1