------- Comment #32 from rguenth at gcc dot gnu dot org  2007-10-24 15:02 
-------
I have a patch to "fix" the heuristics, but it doesn't have effect as nobody
hoists PHI nodes that have become invariant apperantly.  After PRE I see



<bb 100>:
  # HEAP.202_828 = PHI <HEAP.202_747(150), HEAP.202_743(148)>

<bb 101>:
  # SMT.222_639 = PHI <SMT.222_638(100), SMT.222_599(152)>
  # dtvol_656 = PHI <dtvol_620(100), dtvol_655(152)>
  # MPT.242_668 = PHI <MPT.242_744(100), MPT.242_668(152)>
  # l_1 = PHI <1(100), l_428(152)>
  # VUSE <MPT.242_668>
  D.1241_376 = du.data;
... (more VUSEs of MPT.242_668, the only VDEFs in the loop follow)
  # dtvol_655 = VDEF <dtvol_656>
  # SMT.222_599 = VDEF <SMT.222_639>
  (*D.1242_377)[D.1259_397] = D.1277_426;
  l_428 = l_1 + 1;
  if (l_1 == 5)
    goto <bb 102>;
  else
    goto <bb 152>;

<bb 152>:
  goto <bb 101>;

<bb 102>:

the

  # SMT.222_639 = PHI <SMT.222_638(100), SMT.222_599(152)>

could be hoisted to BB100 (even to BB92).  Who is supposed to do this?


-- 


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

Reply via email to