[Bug ipa/68672] [4.9/5/6 Regression] g++.dg/torture/pr68470.C: ICE: cannot update SSA form: statement uses released SSA name

2016-02-12 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68672

--- Comment #7 from Jakub Jelinek  ---
Author: jakub
Date: Fri Feb 12 11:57:54 2016
New Revision: 233374

URL: https://gcc.gnu.org/viewcvs?rev=233374=gcc=rev
Log:
PR ipa/68672
* ipa-split.c (split_function): Don't compute/use main_part_return_p.
Compute retval and retbnd early in all cases if split_part_return_p
and return_bb is not EXIT.  Remove all clobber stmts and reset
all debug stmts that refer to SSA_NAMEs defined in split part,
except if it is retval, in that case replace the old retval with the
lhs of the call to the split part.

* g++.dg/ipa/pr68672-1.C: New test.
* g++.dg/ipa/pr68672-2.C: New test.
* g++.dg/ipa/pr68672-3.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/ipa/pr68672-1.C
trunk/gcc/testsuite/g++.dg/ipa/pr68672-2.C
trunk/gcc/testsuite/g++.dg/ipa/pr68672-3.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/ipa-split.c
trunk/gcc/testsuite/ChangeLog

[Bug ipa/68672] [4.9/5/6 Regression] g++.dg/torture/pr68470.C: ICE: cannot update SSA form: statement uses released SSA name

2016-02-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68672

Jakub Jelinek  changed:

   What|Removed |Added

  Attachment #37657|0   |1
is obsolete||

--- Comment #6 from Jakub Jelinek  ---
Created attachment 37664
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37664=edit
gcc6-pr68672.patch

Untested fix.

[Bug ipa/68672] [4.9/5/6 Regression] g++.dg/torture/pr68470.C: ICE: cannot update SSA form: statement uses released SSA name

2016-02-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68672

--- Comment #5 from Jakub Jelinek  ---
Created attachment 37657
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37657=edit
gcc6-pr68672-wip.patch

WIP patch.

[Bug ipa/68672] [4.9/5/6 Regression] g++.dg/torture/pr68470.C: ICE: cannot update SSA form: statement uses released SSA name

2016-02-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68672

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek  ---
I believe this started with r197375.
And why is this happening is fairly obvious, we want to ignore clobbers in the
decisions made by fnsplit, and thus we recognize bb8 as the return_bb.  When
clobbers could have just decls on the LHS, this could not be a problem.
It is ok to ignore the clobbers in the decision making, but we really need to
adjust them/remove them/move them somewhere else.

[Bug ipa/68672] [4.9/5/6 Regression] g++.dg/torture/pr68470.C: ICE: cannot update SSA form: statement uses released SSA name

2016-01-14 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68672

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P2

[Bug ipa/68672] [4.9/5/6 Regression] g++.dg/torture/pr68470.C: ICE: cannot update SSA form: statement uses released SSA name

2016-01-12 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68672

Jan Hubicka  changed:

   What|Removed |Added

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

--- Comment #3 from Jan Hubicka  ---
mine.

[Bug ipa/68672] [4.9/5/6 Regression] g++.dg/torture/pr68470.C: ICE: cannot update SSA form: statement uses released SSA name

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

--- Comment #2 from Richard Biener  ---
Hum.  We outline  bb 6 and bb 7 in the following (but not bb 8).


   |  /
  
ptr_1 = ...;
   if ()
   |   \
   |   
   |/
  
   *ptr_1 = ...;
   returnl

so the split part computes ptr_1 but the main part uses it.

Honza - is IPA split supposed to ever generate such split parts?  The
split part has two returns as well.

See also the other PR where it splits on a loop header rather than
the preheader leading to it (thus leaving fallthru code to the split
part in the main function).  It seems to me it would need to consider
returning all set_ssa_names names if they are used outside of the split
part.  OTOH I don't know why the articulation at BB 6 doesn't include BB 8...

I'm really not very familiar with IPA split and the code-gen part looks
like a huge mess  to me.

[Bug ipa/68672] [4.9/5/6 Regression] g++.dg/torture/pr68470.C: ICE: cannot update SSA form: statement uses released SSA name

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

Richard Biener  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-12-03
 CC||hubicka at gcc dot gnu.org,
   ||rguenth at gcc dot gnu.org
  Component|middle-end  |ipa
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener  ---
Confirmed.  Looks similar to PR68470, IPA split messes up.