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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2014-02-14
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Doesn't abort for me.  phiprop does

Inserting PHI for result of load _6 = *y_5;
  for edge defining &c inserting load _19 = MEM[(long unsigned int *)&c];
  for edge defining y_13 inserting load _20 = *y_13;
_6 = PHI <_19(2), _20(3)>

on

  <bb 2>:
  w_4 = *x_2(D);
  goto <bb 4>;

  <bb 3>:
  _6 = *y_5;
  w_8 = _6 ^ w_7;
  _9 = MEM[(long unsigned int *)y_5 + 8B];
  w_10 = w_8 + _9;
  _11 = MEM[(long unsigned int *)y_5 + 16B];
  w_12 = w_10 ^ _11;
  y_13 = &MEM[(void *)y_5 + 32B];
  _14 = MEM[(long unsigned int *)y_5 + 24B];
  w_15 = w_12 + _14;
  i_17 = i_16 + 1;

  <bb 4>:
  # y_5 = PHI <&c(2), y_13(3)>

which results in

  <bb 2>:
  w_4 = *x_2(D);
  _19 = MEM[(long unsigned int *)&c];
  goto <bb 4>;

  <bb 3>:
  w_8 = _6 ^ w_7;
  _9 = MEM[(long unsigned int *)y_5 + 8B];
  w_10 = w_8 + _9;
  _11 = MEM[(long unsigned int *)y_5 + 16B];
  w_12 = w_10 ^ _11;
  y_13 = &MEM[(void *)y_5 + 32B];
  _14 = MEM[(long unsigned int *)y_5 + 24B];
  w_15 = w_12 + _14;
  i_17 = i_16 + 1;
  _20 = *y_13;

  <bb 4>:
  # y_5 = PHI <&c(2), y_13(3)>
  # _6 = PHI <_19(2), _20(3)>

I see nothing wrong with that.  Ah, but the load is conditional on i <= 7,
so we effectively speculate it.

Mine.

Reply via email to