Print this page
12257 resync smatch to 0.6.1-rc1-il-4

Split Close
Expand all
Collapse all
          --- old/usr/src/tools/smatch/src/smatch_math.c
          +++ new/usr/src/tools/smatch/src/smatch_math.c
↓ open down ↓ 1598 lines elided ↑ open up ↑
1599 1599  int get_implied_value(struct expression *expr, sval_t *sval)
1600 1600  {
1601 1601          struct range_list *rl;
1602 1602  
1603 1603          if (!get_rl_helper(expr, RL_IMPLIED, &rl) ||
1604 1604              !rl_to_sval(rl, sval))
1605 1605                  return 0;
1606 1606          return 1;
1607 1607  }
1608 1608  
     1609 +int get_implied_value_fast(struct expression *expr, sval_t *sval)
     1610 +{
     1611 +        struct range_list *rl;
     1612 +        static int recurse;
     1613 +        int ret = 0;
     1614 +
     1615 +        if (recurse)
     1616 +                return 0;
     1617 +
     1618 +        recurse = 1;
     1619 +        set_fast_math_only();
     1620 +        if (get_rl_helper(expr, RL_IMPLIED, &rl) &&
     1621 +            rl_to_sval(rl, sval))
     1622 +                ret = 1;
     1623 +        clear_fast_math_only();
     1624 +        recurse = 0;
     1625 +
     1626 +        return ret;
     1627 +}
     1628 +
1609 1629  int get_implied_min(struct expression *expr, sval_t *sval)
1610 1630  {
1611 1631          struct range_list *rl;
1612 1632  
1613 1633          if (!get_rl_helper(expr, RL_IMPLIED, &rl) || !rl)
1614 1634                  return 0;
1615 1635          *sval = rl_min(rl);
1616 1636          return 1;
1617 1637  }
1618 1638  
↓ open down ↓ 259 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX