On 5/30/19 12:57 AM, Jiufu Guo wrote: > Richard Biener <rguent...@suse.de> writes: > >> On May 29, 2019 10:21:46 PM GMT+02:00, Jeff Law <l...@redhat.com> wrote: >>> On 5/24/19 6:45 AM, Richard Biener wrote: >>> [ Aggressive snipping ] >>> >>>> As said in my first review I'd just check whether for the >>>> edge we want to thread through the definition comes from a CMP. >>>> Suppose you have >>>> >>>> # val_1 = PHI <a_2, b_3, c_4> >>>> if (val_1 != 0) >>>> >>>> and only one edge has a b_3 = d_5 != 0 condition it's still >>>> worth tail-duplicating the if block. >>> Agreed. The cost of tail duplicating here is so small we should be >>> doing it highly aggressively. About the only case where we might not >>> want to would be if we're optimizing for size rather than speed. That >>> case isn't clearly a win either way. >> >> Even there the PHI likely causes edge copies to be inserted. So I >> wouldn't care for the moment. The proper check would be ! >> Optimize_edge_for_size_p (e). > For most of this kind of case where the bb contains just one conditional > jump stmt, it may not increase the size especially for there are > combinings in follow passes -- it may save size ;) My point was it's not as clear cut. Regardless I think we've gone pretty deep into the weeds. I think we could easily handle that case as a follow-up.
jeff