Lines Matching refs:mode
63 *do_expression(usage_t mode, struct expression *expr),
64 *do_statement(usage_t mode, struct statement *stmt);
71 static inline usage_t u_rval(usage_t mode)
73 return mode & (U_R_VAL | (U_MASK << U_SHIFT))
77 static inline usage_t u_addr(usage_t mode)
79 return mode = mode & U_MASK
80 ? U_R_AOF | (mode & U_W_AOF) : 0;
90 static usage_t fix_mode(struct symbol *type, usage_t mode)
92 mode &= (U_SELF | (U_SELF << U_SHIFT));
100 if (mode & U_MASK)
101 mode &= U_SELF;
105 if (mode & U_R_VAL)
106 mode |= U_R_AOF;
107 mode &= ~(U_R_VAL | U_W_AOF);
110 if (mode & (U_MASK << U_SHIFT))
111 mode >>= U_SHIFT;
112 else if (mode != U_W_VAL)
113 mode = u_addr(mode);
116 if (!(mode & U_R_AOF))
117 mode &= ~U_W_AOF;
119 return mode;
122 static struct symbol *report_member(usage_t mode, struct position *pos,
128 reporter->r_member(fix_mode(ret, mode), pos, type, mem);
133 static void report_implicit(usage_t mode, struct position *pos, struct symbol *type)
139 reporter->r_member(mode, pos, type, NULL);
142 report_implicit(mode, pos, base_type(mem)));
165 static struct symbol *report_symbol(usage_t mode, struct expression *expr)
171 return report_member(mode, &expr->pos, ret, expr->symbol);
173 reporter->r_symbol(fix_mode(ret, mode), &expr->pos, sym);
333 static struct symbol *do_expression(usage_t mode, struct expression *expr)
353 ret = do_statement(mode, expr->statement);
360 ret = do_expression(mode, expr->right);
367 mode = u_rval(mode);
368 do_expression(mode, expr->left);
369 do_expression(mode, expr->right);
373 ? U_R_VAL : U_R_VAL | mode,
375 ret = do_expression(mode, expr->cond_true);
376 ret = do_expression(mode, expr->cond_false);
390 mode |= U_W_VAL | U_R_VAL;
392 mode &= ~U_R_VAL;
393 ret = do_expression(mode, expr->left);
394 report_implicit(mode, &expr->pos, ret);
395 mode = expr->op == '='
397 do_expression(mode, expr->right);
401 mode |= u_rval(mode);
402 l = do_expression(mode, expr->left);
403 r = do_expression(mode, expr->right);
418 mode |= U_W_VAL | U_R_VAL;
420 mode |= u_rval(mode);
422 ret = do_expression(mode, unop);
429 do_expression(u_addr(mode), unop);
434 if (mode & (U_MASK << U_SHIFT))
435 mode |= U_R_VAL;
436 mode <<= U_SHIFT;
437 if (mode & (U_R_AOF << U_SHIFT))
438 mode |= U_R_VAL;
439 if (mode & (U_W_VAL << U_SHIFT))
440 mode |= U_W_AOF;
441 ret = do_expression(mode, unop);
451 p_mode = mode & U_SELF;
452 if (!(mode & U_MASK) && (mode & (U_MASK << U_SHIFT)))
456 ret = report_member(mode, &expr->pos, p_type,
480 ret = do_expression(mode, map->expr);
482 ret = do_expression(mode, expr->def);
486 ret = report_symbol(mode, expr);
492 static void do_asm_xputs(usage_t mode, struct asm_operand_list *xputs)
494 DO_LIST(xputs, op, do_expression(U_W_AOF | mode, op->expr));
497 static struct symbol *do_statement(usage_t mode, struct statement *stmt)
513 ret = do_expression(mode, stmt->expression);
530 ret = do_statement(--count ? U_VOID : mode, st));
559 do_statement(mode, stmt->label_statement);