Control dependence vs. builtin_unreachable

Richard Biener
Wed Jan 9 08:45:00 GMT 2013

On Tue, Jan 8, 2013 at 5:16 PM, Jeff Law <> wrote:
> On 01/08/2013 04:26 AM, Richard Biener wrote:
>> The issue is VRP - when you remove unreachable blocks you lose the
>> conditional statement as it is no longer necessary and thus the predicate
>> you can derive value-ranges from.
> Understood.  Perhaps we could eliminate them after the first VRP pass, but
> before the second.  That ought to give us the majority of the benefit of
> seeing the conditional and propagating based on the conditional, but also
> give us the benefit of eliminating the branch generating straight-line code.
> Clearly it needs more investigation, but I think it's worth exploring.

Sure - especially if we eventually move to preserve value-range information
across passes.  __builtin_constant_p is a similar thing - it guards one
reachable and one unreachable path but we forcefully remove it only
during the late fold-all-builtins pass.


> Jeff

More information about the Gcc-patches mailing list