Patch #3 will remove handle_dominating_asserts from the core of the jump
threading code and push it into VRP's callbacks where it should always
have been.
As a side effect it causes some code which was previously only used for
threading from VRP to be used unconditionally. It's actually a good
thing as that code will find more jump threads. But in one case the
resulting code is tougher for tree-ssa-uninit.c to handle and we get a
false positive uninit warning.
As it turns out for that case we're better off improving DOM slightly
which allows DOM to simplify the test even further. This patch
implements the DOM improvement so that we don't see a regression when
patch #3 is installed.
The particular case we're looking to improve looks like
t = a | b;
if (t == 0)
...
In the TRUE arm we know that a must be zero and b must be zero.
Discovering those equivalences allows DOM to do a better job for the
uninit testcase from the testsuite.
There's clearly more that could be done with this code, but I didn't
want to take it any further than was needed to address the regression
that would be caused by patch #3.
Bootstrapped and regression tested on x86_64-linux-gnu. Installing on
the trunk. I'll be testing this in combination with patch #1 tomorrow
on ppc64le to get additional coverage.
Jeff