[Bug tree-optimization/65961] [6 Regression] ice in vect_is_simple_use_1 with -O3

2015-06-03 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65961

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #8 from Richard Biener rguenth at gcc dot gnu.org ---
Fixed.


[Bug tree-optimization/65961] [6 Regression] ice in vect_is_simple_use_1 with -O3

2015-06-02 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65961

--- Comment #7 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Tue Jun  2 07:50:19 2015
New Revision: 224013

URL: https://gcc.gnu.org/viewcvs?rev=224013root=gccview=rev
Log:
2015-06-02  Richard Biener  rguent...@suse.de

PR tree-optimization/65961
* tree-vect-slp.c (vect_get_and_check_slp_defs): Remove bogus
check and clarify dump message.
(vect_build_slp_tree): If all children are built up from scalars
build up the parent from scalars instead.
* tree-vect-stmts.c (vect_is_simple_use): Cleanup.

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

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr65961.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vect-slp.c
trunk/gcc/tree-vect-stmts.c


[Bug tree-optimization/65961] [6 Regression] ice in vect_is_simple_use_1 with -O3

2015-05-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65961

--- Comment #6 from Richard Biener rguenth at gcc dot gnu.org ---
It might be mitigated for the testcase in question but the underlying problem
didn't get fixed.


[Bug tree-optimization/65961] [6 Regression] ice in vect_is_simple_use_1 with -O3

2015-05-20 Thread dcb314 at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65961

--- Comment #5 from David Binderman dcb314 at hotmail dot com ---
As of trunk 20150520, this bug looks fixed to me.


[Bug tree-optimization/65961] [6 Regression] ice in vect_is_simple_use_1 with -O3

2015-05-12 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65961

--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
Hmpf, so we have an operand that is both part of a regular SLP node _and_ is
part
of a SLP node that gets its operand built up from scalars.  So obviously
looking at STMT_VINFO_VECTORIZABLE (def-of-op) isn't giving the correct answer
(it depends on context).

I tried to avoid passing down the SLP node to vect_is_simple_use[_1], but that
is what it would take to fix this (well, or reject the SLP build while we
compute
STMT_VINFO_VECTORIZABLE ()).

I have to think more about what refactoring would make sense here.


[Bug tree-optimization/65961] [6 Regression] ice in vect_is_simple_use_1 with -O3

2015-05-04 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65961

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||mpolacek at gcc dot gnu.org
   Target Milestone|--- |6.0

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
Started with r222514.


[Bug tree-optimization/65961] [6 Regression] ice in vect_is_simple_use_1 with -O3

2015-05-04 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65961

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
Mine.


[Bug tree-optimization/65961] [6 Regression] ice in vect_is_simple_use_1 with -O3

2015-05-01 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65961

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-05-01
 CC||trippels at gcc dot gnu.org
  Component|c   |tree-optimization
Summary|ice in vect_is_simple_use_1 |[6 Regression] ice in
   |with -O3|vect_is_simple_use_1 with
   ||-O3
 Ever confirmed|0   |1

--- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
int *a;
void
foo ()
{
  do
{
  a[16] = (a[1] ^ a[0])  1 | a[1];
  a[17] = (a[0] ^ a[1])  1 | a[0];
  a[18] = (a[0] ^ a[1])  1 | a[0];
  a[19] = (a[0] ^ a[1])  1 | a[0];
  a[20] = (a[0] ^ a[1])  1 | a[0];
  a[21] = (a[0] ^ a[1])  1 | a[0];
  a[22] = (a[0] ^ a[1])  1 | a[0];
  a[23] = (a[20] ^ a[1])  1 | a[9];
  a += 8;
}
  while (1);
}