------- Comment #2 from rguenth at gcc dot gnu dot org  2010-06-29 12:07 -------
Note that the issue is that PRE pessimizes code by transforming

  if (D.3841_10 != 0)
    goto <bb 4>;
  else
    goto <bb 7>;

<bb 7>:
  goto <bb 5>;

<bb 4>:
  pos_11 = i_24 + 1;

<bb 5>:
  # pos_1 = PHI <pos_23(7), pos_11(4)>
  # limit_4 = PHI <limit_25(7), limit_9(4)>
  i_13 = i_24 + 1;

to

  if (D.3841_10 != 0)
    goto <bb 4>;
  else
    goto <bb 7>;

<bb 7>:
  pretmp.4_22 = i_24 + 1;
  goto <bb 5>;

<bb 4>:
  pos_11 = i_24 + 1;

<bb 5>:
  # pos_1 = PHI <pos_23(7), pos_11(4)>
  # limit_4 = PHI <limit_25(7), limit_9(4)>
  # prephitmp.5_21 = PHI <pretmp.4_22(7), pos_11(4)>
  i_13 = prephitmp.5_21;

which exposes the fact that we do not do code-hoisting presently.
Removing the IV restriction from PRE would create i_24 + 1
as new IV with an increment in the latch block.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2010-06-29 12:07:13
               date|                            |


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

Reply via email to