[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-12-02 Thread uweigand at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

--- Comment #6 from Ulrich Weigand uweigand at gcc dot gnu.org ---
Author: uweigand
Date: Tue Dec  2 14:27:46 2014
New Revision: 218273

URL: https://gcc.gnu.org/viewcvs?rev=218273root=gccview=rev
Log:
PR target/64115
* config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove
invalid UNSPEC_TOCREL sanity check under ENABLE_CHECKING.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/rs6000.c


[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-12-02 Thread uweigand at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

--- Comment #7 from Ulrich Weigand uweigand at gcc dot gnu.org ---
Author: uweigand
Date: Tue Dec  2 14:30:47 2014
New Revision: 218274

URL: https://gcc.gnu.org/viewcvs?rev=218274root=gccview=rev
Log:
PR target/64115
* config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove
invalid UNSPEC_TOCREL sanity check under ENABLE_CHECKING.

Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/config/rs6000/rs6000.c


[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-12-02 Thread uweigand at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

--- Comment #8 from Ulrich Weigand uweigand at gcc dot gnu.org ---
Author: uweigand
Date: Tue Dec  2 14:33:00 2014
New Revision: 218275

URL: https://gcc.gnu.org/viewcvs?rev=218275root=gccview=rev
Log:
PR target/64115
* config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove
invalid UNSPEC_TOCREL sanity check under ENABLE_CHECKING.

Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/config/rs6000/rs6000.c


[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-12-02 Thread uweigand at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

Ulrich Weigand uweigand at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #9 from Ulrich Weigand uweigand at gcc dot gnu.org ---
Fixed everywhere.


[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-12-01 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P2
   Target Milestone|--- |4.9.3


[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-12-01 Thread uweigand at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

Ulrich Weigand uweigand at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-12-01
   Assignee|unassigned at gcc dot gnu.org  |uweigand at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #2 from Ulrich Weigand uweigand at gcc dot gnu.org ---
Confirmed.


[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-12-01 Thread uweigand at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

Ulrich Weigand uweigand at gcc dot gnu.org changed:

   What|Removed |Added

 CC||dje.gcc at gmail dot com

--- Comment #3 from Ulrich Weigand uweigand at gcc dot gnu.org ---
The ICE is triggered by checking code in rs6000_delegitimize_address:

  if (GET_CODE (y) == UNSPEC
   XINT (y, 1) == UNSPEC_TOCREL)
{
#ifdef ENABLE_CHECKING
  if (REG_P (XVECEXP (y, 0, 1))
   REGNO (XVECEXP (y, 0, 1)) == TOC_REGISTER)
{
  /* All good.  */
}
  else if (GET_CODE (XVECEXP (y, 0, 1)) == DEBUG_EXPR)
{
  /* Weirdness alert.  df_note_compute can replace r2 with a
 debug_expr when this unspec is in a debug_insn.
 Seen in gcc.dg/pr51957-1.c  */
}
  else
{
  debug_rtx (orig_x);
  abort ();
}
#endif

which attempts to ensure that the second argument of UNSPEC_TOCREL is the TOC
register.   However, this check seems fragile; in debug code, we can get RTX
simplifications that replace the TOC register by some equivalent expression.

The code already recognizes one such case; this bug shows another case, where
the TOC register is replaced by a MEM RTX for the TOC save slot holding the TOC
value.  [ This case is probably made more likely by the change in my ELFv2 ABI
preparation patch, which has the effect of making TOC moves into the save slot
more explicit at the RTL level, allowing var-tracking code to detect that
equivalence. ]

One could try to make this check in rs6000_delegitimize_address more generic by
allowing some (or all) MEM RTXes.  However, I'm wonding what exactly that check
is supposed to achieve in the first place; for the purposes of this routine,
the second argument of UNSPEC_TOCREL is really irrelevant.

David, would you be OK with simply removing the check (everything enclosed with
ENABLE_CHECKING in the above code)?


[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-12-01 Thread dje at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

David Edelsohn dje at gcc dot gnu.org changed:

   What|Removed |Added

 CC||amodra at gcc dot gnu.org,
   ||dje at gcc dot gnu.org

--- Comment #4 from David Edelsohn dje at gcc dot gnu.org ---
This was part of a large patch by Alan and probably added by him while he was
debugging. I would like his recommendations about the fate of the checking
code.


[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-12-01 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

Alan Modra amodra at gmail dot com changed:

   What|Removed |Added

 CC||amodra at gmail dot com

--- Comment #5 from Alan Modra amodra at gmail dot com ---
I'm happy to have it removed.


[Bug target/64115] [4.9/5 Regression] ICE: : in rs6000_delegitimize_address, at config/rs6000/rs6000.c:7051

2014-11-29 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64115

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 CC||uweigand at gcc dot gnu.org
Summary|[5 Regression] ICE: : in|[4.9/5 Regression] ICE: :
   |rs6000_delegitimize_address |in
   |, at|rs6000_delegitimize_address
   |config/rs6000/rs6000.c:7051 |, at
   ||config/rs6000/rs6000.c:7051

--- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Started with r204803.