[Bug middle-end/52173] internal compiler error: verify_ssa failed possibly caused by itm

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Sep 21 13:28:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52173

--- Comment #14 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-09-21 13:27:30 UTC ---
We have broken immediate uses of .MEM_2 (for example).  Before update-ssa:

main ()
{
  int a.1;
  int a.0;
  int i;

  <bb 2>:

  <bb 8>:
  # i_10 = PHI <0(2)>
  # .MEM_11 = PHI <.MEM_3(D)(2)>

  <bb 9>:
  # .MEM_4 = VDEF <.MEM_2>
  __transaction_atomic  // SUBCODE=[ GTMA_HAVE_LOAD GTMA_HAVE_STORE ]
...
  <bb 3>:
  # .MEM_12 = VDEF <.MEM_2>
  __transaction_atomic  // SUBCODE=[ GTMA_HAVE_LOAD GTMA_HAVE_STORE ]
...
  <bb 7>:
  # VUSE <.MEM_2>
  return 0;

but debug_immediate_uses shows:

.MEM_2 : -->2 uses.
# VUSE <.MEM_2>
return 0;
# .MEM_12 = VDEF <.MEM_2>
__transaction_atomic  // SUBCODE=[ GTMA_HAVE_LOAD GTMA_HAVE_STORE ]

that means that update_stmt didn't do its job or it wasn't called.

Aahhhh.  Because in gimple_copy:

  /* Make copy of operands.  */
  if (num_ops > 0)
    {
...
      /* SSA operands need to be updated.  */
      gimple_set_modified (copy, true);
    }

there are zero (real) operands but we _do_ have virtual ops.



More information about the Gcc-bugs mailing list