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

Reply via email to