> Hi,
> as observed on PR54717 we give up on some partial insertions because of
> Skipping partial partial redundancy for expression 
> {array_ref<pretmp_8,0,4>,mem_ref<0B>,xxtrt_46(D)}@.MEM_30(D) (0165) not 
> partially anticipated on any to be optimized for speed edges
> 
> The logic here is wrong, the edges are tested by optimize_edge_for_speed_p and
> it never returns false for any edge queried by tree-ssa-pre.c.
> 
> The problem is that the code looks for basic block BLOCK with partial
> anticipance of given expression. Then it is trying to check that the path in
> question is hot by looking for succesors of BLOCK that also do have partial
> anticipance and are hot.
> 
> In this testcase BLOCK has two succesors - one without any anticipance and
> one with full anticipance, so we give up regardless of the profile.  This 
> patch
> fixes it.
> 
> Unforutnately it seems that the missed vectorization PR is about is not fixed,
> we give up for alignment issues now.  I am looking into this incrementally.

Actually I was wrong.  The patch does solve majority of rnflow regression
(reduces runtime from 38s to 30s)

http://gcc.opensuse.org/c++bench-frescobaldi/polyhedron/polyhedron-summary.txt-2-0.html

4.7 vectorizes two extra loops in that function, but the vectorization is not
desirable as I discussed in the PR log. 

Also there are no off-noise performance/size regressions on other benchmarks.
We have new regression on induct, but that one happent one run earlier.

Honza

Reply via email to