Print this page
12166 resync smatch to 0.6.1-rc1-il-3

Split Close
Expand all
Collapse all
          --- old/usr/src/tools/smatch/src/smatch_expressions.c
          +++ new/usr/src/tools/smatch/src/smatch_expressions.c
↓ open down ↓ 77 lines elided ↑ open up ↑
  78   78          struct expression *preop;
  79   79  
  80   80          preop = alloc_tmp_expression(expr->pos, EXPR_PREOP);
  81   81          preop->unop = expr;
  82   82          preop->op = op;
  83   83          return preop;
  84   84  }
  85   85  
  86   86  struct expression *deref_expression(struct expression *expr)
  87   87  {
       88 +        if (expr->type == EXPR_BINOP)
       89 +                expr = preop_expression(expr, '(');
  88   90          return preop_expression(expr, '*');
  89   91  }
  90   92  
  91   93  struct expression *assign_expression(struct expression *left, int op, struct expression *right)
  92   94  {
  93   95          struct expression *expr;
  94   96  
  95   97          if (!right)
  96   98                  return NULL;
  97   99  
↓ open down ↓ 57 lines elided ↑ open up ↑
 155  157          string->immutable = 0;
 156  158          memcpy(string->data, str, len);
 157  159  
 158  160          ret = alloc_tmp_expression(get_cur_pos(), EXPR_STRING);
 159  161          ret->wide = 0;
 160  162          ret->string = string;
 161  163  
 162  164          return ret;
 163  165  }
 164  166  
      167 +struct expression *call_expression(struct expression *fn, struct expression_list *args)
      168 +{
      169 +        struct expression *expr;
      170 +
      171 +        expr = alloc_tmp_expression(fn->pos, EXPR_CALL);
      172 +        expr->fn = fn;
      173 +        expr->args = args;
      174 +
      175 +        return expr;
      176 +}
      177 +
 165  178  static struct expression *get_expression_from_base_and_str(struct expression *base, const char *addition)
 166  179  {
 167  180          struct expression *ret = NULL;
 168  181          struct token *token, *prev, *end;
 169  182          char *alloc;
 170  183  
 171  184          if (addition[0] == '\0')
 172  185                  return base;
 173  186  
 174  187          alloc = alloc_string_newline(addition);
↓ open down ↓ 146 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX