------- Comment #9 from rguenth at gcc dot gnu dot org  2010-01-30 16:06 -------
(In reply to comment #6)
> The interesting thing is that the empty loop is not removed by
> the control-dependent DCE pass that follows the 2nd VRP.
> 
> This happens because
> 
> 
> <bb 3>:
>   if (obj_7(D) != 0B)
>     goto <bb 5>;
>   else
>     goto <bb 4>;
> 
> <bb 4>:
>   # i_36 = PHI <0(3)>
> 
> <bb 10>:
>   # i_25 = PHI <i_36(4), i_35(12)>
>   i_35 = i_25 + 1;
>   if (i_35 != num_6(D))
>     goto <bb 12>;
>   else
>     goto <bb 8>;
> 
> <bb 12>:
>   goto <bb 10>;
> 
> ...
> 
> <bb 7>:
> Invalid sum of incoming frequencies 6888, should be 7735
>   # s_2 = PHI <s_19(6), s_23(11)>
>   i_20 = i_18 + 1;
>   if (i_20 != num_6(D))
>     goto <bb 13>;
>   else
>     goto <bb 8>;
> 
> ...
> 
> <bb 8>:
>   # s_3 = PHI <s_2(7), 0(10)>
> 
> 
> the PHI node defining s_3 marks the controlling statement necessary
> which in turn marks the loop necessary.  Now the question is if this
> is an inherent limitation of CD-DCE or if the controlling stmt
> should be that in BB3 instead (the immediate common dominator of
> bb7 and bb10 is bb3).  Steven?  You implemented that CD-DCE stuff?

-> PR42906


-- 


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

Reply via email to