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

--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Marc Glisse from comment #7)
> (In reply to rguent...@suse.de from comment #6)
> > that's a conditional assignment AFAICS
> 
> Ah, you are right of course. It shouldn't be conditional, but it will take a
> VRP pass to notice that. If I schedule another FRE right after VRP1, things
> optimize nicely, and after some cleanup by DOM+DSE, DCE2 can remove all
> malloc+free. However, if I don't add this extra FRE pass, we somehow don't
> manage. Note that in the PRE dump, with just your patch (no extra pass), I
> see:
> 
>   pretmp_92 = 1;
>   _235 = pretmp_92;
>   if (_235 == 0)
> 
> and these conditions seem to be what prevents us from finishing the job.

Yeah.  Looks somewhat tricky, but I'll play with it.  Meanwhile testing
a proper patch for the first issue.

Reply via email to