[Bug tree-optimization/91091] [missed optimization] Missing optimization in unaliased pointers

2019-10-11 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91091

--- Comment #6 from Richard Biener  ---
Author: rguenth
Date: Fri Oct 11 13:10:15 2019
New Revision: 276882

URL: https://gcc.gnu.org/viewcvs?rev=276882=gcc=rev
Log:
2019-10-11  Richard Biener  

PR tree-optimization/90883
PR tree-optimization/91091
* tree-ssa-sccvn.c (vn_reference_lookup_3): Use correct
alias-sets both for recording VN table entries and continuing
walking after translating through copies.  Handle same-sized
reads from SSA names by returning the plain SSA name.
(eliminate_dom_walker::eliminate_stmt): Properly handle
non-size precision stores in redundant store elimination.

* gcc.dg/torture/20191011-1.c: New testcase.
* gcc.dg/tree-ssa/ssa-fre-82.c: Likewise.
* gcc.dg/tree-ssa/ssa-fre-83.c: Likewise.
* gcc.dg/tree-ssa/redundant-assign-zero-1.c: Disable FRE.
* gcc.dg/tree-ssa/redundant-assign-zero-2.c: Likewise.

Added:
trunk/gcc/testsuite/gcc.dg/torture/20191011-1.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-82.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-83.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/tree-ssa/redundant-assign-zero-1.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/redundant-assign-zero-2.c
trunk/gcc/tree-ssa-sccvn.c

[Bug tree-optimization/91091] [missed optimization] Missing optimization in unaliased pointers

2019-08-15 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91091

--- Comment #5 from Richard Biener  ---
Author: rguenth
Date: Thu Aug 15 12:02:47 2019
New Revision: 274532

URL: https://gcc.gnu.org/viewcvs?rev=274532=gcc=rev
Log:
2019-08-15  Richard Biener  

PR tree-optimization/91445
* gcc.dg/torture/pr91445.c: New testcase.

Backport from mainline
2019-07-05  Richard Biener  

PR tree-optimization/91091
* tree-ssa-alias.h (get_continuation_for_phi): Add tbaa_p parameter.
(walk_non_aliased_vuses): Likewise.
* tree-ssa-alias.c (maybe_skip_until): Pass down tbaa_p.
(get_continuation_for_phi): New tbaa_p parameter and pass
it down.
(walk_non_aliased_vuses): Likewise.
* tree-ssa-pre.c (translate_vuse_through_block): Likewise.
* tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
Likewise.
* tree-ssa-sccvn.c (struct vn_walk_cb_data): Add tbaa_p flag.
(vn_reference_lookup_3): Handle and pass down tbaa_p flag.
(vn_reference_lookup_pieces): Adjust.
(vn_reference_lookup): Remove alias-set altering, instead pass
down false as tbaa_p.

* gcc.dg/tree-ssa/pr91091-2.c: New testcase.

2019-07-04  Richard Biener  

* tree-ssa-sccvn.h (vn_reference_lookup): Add last_vuse_ptr
argument.
* tree-ssa-sccvn.c (last_vuse_ptr, vn_walk_kind): Move
globals into...
(struct vn_walk_cb_data): New callback data struct.
(vn_reference_lookup_2): Adjust.
(vn_reference_lookup_3): Likewise.
(vn_reference_lookup_pieces): Likewise.
(vn_reference_lookup): Likewise, get last_vuse_ptr argument.
(visit_reference_op_load): Adjust.

Added:
branches/gcc-9-branch/gcc/testsuite/gcc.dg/torture/pr91445.c
branches/gcc-9-branch/gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c
Modified:
branches/gcc-9-branch/gcc/ChangeLog
branches/gcc-9-branch/gcc/testsuite/ChangeLog
branches/gcc-9-branch/gcc/tree-ssa-alias.c
branches/gcc-9-branch/gcc/tree-ssa-alias.h
branches/gcc-9-branch/gcc/tree-ssa-pre.c
branches/gcc-9-branch/gcc/tree-ssa-sccvn.c
branches/gcc-9-branch/gcc/tree-ssa-sccvn.h
branches/gcc-9-branch/gcc/tree-ssa-scopedtables.c

[Bug tree-optimization/91091] [missed optimization] Missing optimization in unaliased pointers

2019-08-14 Thread hp at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91091
Bug 91091 depends on bug 91419, which changed state.

Bug 91419 Summary: [10 Regression]: gcc.dg/tree-ssa/pr91091-2.c, ssa-fre-61.c, 
ssa-fre-61.c with r273232
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91419

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

[Bug tree-optimization/91091] [missed optimization] Missing optimization in unaliased pointers

2019-07-05 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91091

Richard Biener  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
  Known to work||10.0
 Resolution|--- |FIXED

--- Comment #3 from Richard Biener  ---
Fixed for GCC 10.

[Bug tree-optimization/91091] [missed optimization] Missing optimization in unaliased pointers

2019-07-05 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91091

--- Comment #4 from Richard Biener  ---
Author: rguenth
Date: Fri Jul  5 12:50:45 2019
New Revision: 273135

URL: https://gcc.gnu.org/viewcvs?rev=273135=gcc=rev
Log:
2019-07-05  Richard Biener  

PR tree-optimization/91091
* tree-ssa-alias.h (get_continuation_for_phi): Add tbaa_p parameter.
(walk_non_aliased_vuses): Likewise.
* tree-ssa-alias.c (maybe_skip_until): Pass down tbaa_p.
(get_continuation_for_phi): New tbaa_p parameter and pass
it down.
(walk_non_aliased_vuses): Likewise.
* ipa-prop.c (determine_known_aggregate_parts): Adjust.
* tree-ssa-pre.c (translate_vuse_through_block): Likewise.
* tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
Likewise.
* tree-ssa-sccvn.c (struct vn_walk_cb_data): Add tbaa_p flag.
(adjust_offsets_for_equal_base_address): New function.
(vn_reference_lookup_3): Use it to catch more base equivalences.
Handle and pass down tbaa_p flag.
(vn_reference_lookup_pieces): Adjust.
(vn_reference_lookup): Remove alias-set altering, instead pass
down false as tbaa_p.

* gcc.dg/tree-ssa/pr91091-2.c: New testcase.
* gcc.dg/tree-ssa/ssa-fre-70.c: Likewise.
* gcc.dg/tree-ssa/ssa-fre-71.c: Likewise.
* gcc.dg/tree-ssa/ssa-fre-72.c: Likewise.

Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-70.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-71.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-72.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/ipa-prop.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-alias.c
trunk/gcc/tree-ssa-alias.h
trunk/gcc/tree-ssa-pre.c
trunk/gcc/tree-ssa-sccvn.c
trunk/gcc/tree-ssa-scopedtables.c

[Bug tree-optimization/91091] [missed optimization] Missing optimization in unaliased pointers

2019-07-05 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91091

--- Comment #2 from Richard Biener  ---
Author: rguenth
Date: Fri Jul  5 12:48:42 2019
New Revision: 273134

URL: https://gcc.gnu.org/viewcvs?rev=273134=gcc=rev
Log:
2019-07-05  Richard Biener  

PR tree-optimization/91091
* tree-ssa-sccvn.c (vn_reference_lookup_3): Overlap of
accesses can happen with -fno-strict-aliasing.

* gcc.dg/tree-ssa/pr91091-1.c: New testcase.
* gcc.dg/tree-ssa/ssa-fre-61.c: Adjust.

Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr91091-1.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-61.c
trunk/gcc/tree-ssa-sccvn.c

[Bug tree-optimization/91091] [missed optimization] Missing optimization in unaliased pointers

2019-07-05 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91091

Richard Biener  changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2019-07-05
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener  ---
Note that GCC middle-end semantics would allow partial overlaps here unless
you factor in alignment requirements.

There is actually code in GCC9+ that is supposed to handle this situation but
for some reason it doesn't work here.  I'll see why.