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



--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-02 
11:00:54 UTC ---

The sink issue is that we cannot sink PHI nodes:



  <bb 4>:

...

  if (_11 < _20)

    goto <bb 5>;

  else

    goto <bb 6>;



  <bb 5>:

  _26 = _19->block_info;

  _27 = (long unsigned int) _11;

  _28 = _27 * 8;

  _29 = _26 + _28;



  <bb 6>:

  # _30 = PHI <0B(4), _29(5)>

...

  if (_14 != 0)

    goto <bb 8>;

  else

    goto <bb 7>;



  <bb 7>:

  op2_12 = &_30->out;

...



to be able to sink the definition of _30 into basic-block 7 we'd have to

sink the whole control structure.  Similar to how we only (very) weakly

handle hoisting loop invaraint conditional code we cannot at all sink

conditional code.



-> more specific bug

Reply via email to