Take the following code:
int g(int i, int j)
{
int t = 0;
if (i == j)
t = 3;
if (t != 5)
return 0;
else
return 1;
}
We should be able to in VRP find that t can never be in 5 as t should have the
range [0,3] instead of
changing the range to varying. We do optimize this in DOM via jump threading
but we don't need jump
threading here at all. More complex code can be shown which gives ranges
instead of just values.
--
Summary: VRP does not merge discontinuous ranges of PHIs
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: enhancement
Priority: P2
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23744