[Bug tree-optimization/84803] [8 Regression] ICE from ifcvt_memrefs_wont_trap with -O3

2018-03-12 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84803

Richard Biener  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
  Component|c   |tree-optimization

--- Comment #4 from Richard Biener  ---
I will have a look.

[Bug tree-optimization/84803] [8 Regression] ICE from ifcvt_memrefs_wont_trap with -O3

2018-03-12 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84803

--- Comment #5 from Richard Biener  ---
So the reason is that data-ref analysis doesn't consider

# VUSE <.MEM_20>
_12 = MEM[(char *)"" + 1B];

as a load.  It's an out-of-bound read which we don't fold optimistically
or replace with a trap.

At this point it's probably easiest to just handle the case of data-ref
not producing a reference for constants.

[Bug tree-optimization/84803] [8 Regression] ICE from ifcvt_memrefs_wont_trap with -O3

2018-03-12 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84803

--- Comment #6 from Richard Biener  ---
Author: rguenth
Date: Mon Mar 12 12:32:28 2018
New Revision: 258446

URL: https://gcc.gnu.org/viewcvs?rev=258446&root=gcc&view=rev
Log:
2018-03-12  Richard Biener  

PR tree-optimization/84803
* tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
for refs DR analysis didn't process.

* gcc.dg/torture/pr84803.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr84803.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-if-conv.c

[Bug tree-optimization/84803] [8 Regression] ICE from ifcvt_memrefs_wont_trap with -O3

2018-03-12 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84803

Richard Biener  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #7 from Richard Biener  ---
Fixed.