Print this page
11506 smatch resync

Split Close
Expand all
Collapse all
          --- old/usr/src/tools/smatch/src/smatch_data_source.c
          +++ new/usr/src/tools/smatch/src/smatch_data_source.c
↓ open down ↓ 16 lines elided ↑ open up ↑
  17   17  
  18   18  #include "smatch.h"
  19   19  #include "smatch_slist.h"
  20   20  #include "smatch_extra.h"
  21   21  
  22   22  static int my_id;
  23   23  
  24   24  static char *get_source_parameter(struct expression *expr)
  25   25  {
  26   26          struct expression *tmp;
       27 +        const char *param_name;
  27   28          struct symbol *sym;
  28   29          char *name;
  29   30          int param;
  30   31          char *ret = NULL;
  31   32          char buf[32];
  32   33          int cnt = 0;
       34 +        bool modified = false;
  33   35  
  34   36          tmp = expr;
  35   37          while ((tmp = get_assigned_expr(tmp))) {
  36   38                  expr = tmp;
  37   39                  if (cnt++ > 3)
  38   40                          break;
  39   41          }
  40   42  
  41   43          expr = strip_expr(expr);
  42   44          if (expr->type != EXPR_SYMBOL)
  43   45                  return NULL;
  44   46  
  45   47          name = expr_to_var_sym(expr, &sym);
  46   48          if (!name || !sym)
  47   49                  goto free;
  48   50          param = get_param_num_from_sym(sym);
  49   51          if (param < 0)
  50   52                  goto free;
  51      -        if (param_was_set(expr))
       53 +        param_name = get_param_name_var_sym(name, sym);
       54 +        if (!param_name)
  52   55                  goto free;
       56 +        if (param_was_set_var_sym(name, sym))
       57 +                modified = true;
  53   58  
  54      -        snprintf(buf, sizeof(buf), "p %d", param);
       59 +        snprintf(buf, sizeof(buf), "$%d%s%s", param, param_name + 1,
       60 +                 modified ? " [m]" : "");
  55   61          ret = alloc_string(buf);
  56   62  
  57   63  free:
  58   64          free_string(name);
  59   65          return ret;
  60   66  }
  61   67  
  62   68  static char *get_source_assignment(struct expression *expr)
  63   69  {
  64   70          struct expression *right;
↓ open down ↓ 55 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX