Op wo 12-02-2003, om 07:58 schreef Richard Henderson:
Any idea what the state of the last value-range propagation patch is?
I've been looking at killing the cse-follow-jumps nonsense from cse.c,
and one case we're missing by removing it is
if (x == 0)
foo ();
else if (x == 0)
bar ();
The current cse code marks (x != 0) true on the else branch of the
first if. But our current gcse code has no way to make (x = NOT(0))
available on an edge.
I wouldn't think we'd need too terribly strong VRP to replace what
cse.c does now, but given how often this shows up within gcc source
itself I don't think I can kill what we have without a replacement.
There's an ssa-based VRP algorithm[1] that I mentioned to Diego a while
ago. Basically it's an extension of sparse-CCP and it provides branch
probablilities. Diego said it was on the TODO list with Redhat... Does
that help?
There's an even stronger algorithm that subsumes GVN, sparse CCP, does
value/predicate inference, and would handle this case easily: