This is mostly mechanical. It adds a new VALUE_HANDLE tree code that
is
generated and consumed internally by GVN-PRE. This ought to reduce
memory consumption somewhat (not tested, though) because we won't use
VAR_DECLs as value handles anymore.
The patch also moves all the value numbering routines to tree-vn.c. I
also have changes to make value numbering incorporate virtual operands,
but that is still unstable, so I'm flushing the stable bits out to
avoid
lugging around a huge patch.
Finally, the patch uncovered a subtle bug in tree-optimize.c. The
calls
to init_tree_ssa() and delete_tree_ssa() were sometimes not paired.
When not optimizing, we would call delete_tree_ssa() but not
init_tree_ssa(). Since we are now removing the value numbering hash
table in delete_tree_ssa(), we were ICEing at -O0.
Bootstrapped and tested x86 and x86-64 with no regressions. Dan and
Steven, could you folks take a look and make sure I haven't broken
anything subtle? There should be no behavioural change in PRE.