Home
last modified time | relevance | path

Searched refs:expr (Results 1 – 25 of 470) sorted by relevance

12345678910>>...19

/illumos-gate/usr/src/tools/smatch/src/
H A Dexpand.c57 static int expand_symbol_expression(struct expression *expr) in expand_symbol_expression() argument
59 struct symbol *sym = expr->symbol; in expand_symbol_expression()
63 warning(expr->pos, "undefined preprocessor identifier '%s'", show_ident(expr->symbol_name)); in expand_symbol_expression()
64 expr->type = EXPR_VALUE; in expand_symbol_expression()
65 expr->value = 0; in expand_symbol_expression()
66 expr->taint = 0; in expand_symbol_expression()
73 static long long get_longlong(struct expression *expr) in get_longlong() argument
75 int no_expand = expr->ctype->ctype.modifiers & MOD_UNSIGNED; in get_longlong()
76 long long mask = 1ULL << (expr->ctype->bit_size - 1); in get_longlong()
77 long long value = expr->value; in get_longlong()
[all …]
H A Dsmatch_helper.c106 struct smatch_state *alloc_state_expr(struct expression *expr) in alloc_state_expr() argument
111 expr = strip_expr(expr); in alloc_state_expr()
112 name = expr_to_str(expr); in alloc_state_expr()
119 state->data = expr; in alloc_state_expr()
136 struct expression *expr; in get_argument_from_call_expr() local
142 FOR_EACH_PTR(args, expr) { in get_argument_from_call_expr()
144 return expr; in get_argument_from_call_expr()
146 } END_FOR_EACH_PTR(expr); in get_argument_from_call_expr()
150 struct expression *get_array_expr(struct expression *expr) in get_array_expr() argument
155 if (expr->type != EXPR_BINOP || expr->op != '+') in get_array_expr()
[all …]
H A Dsmatch_conditions.c66 static void split_conditions(struct expression *expr);
68 static int is_logical_and(struct expression *expr) in is_logical_and() argument
70 if (expr->op == SPECIAL_LOGICAL_AND) in is_logical_and()
75 static int handle_zero_comparisons(struct expression *expr) in handle_zero_comparisons() argument
81 if (expr_is_zero(expr->left)) { in handle_zero_comparisons()
82 zero = strip_expr(expr->left); in handle_zero_comparisons()
84 __split_expr(expr->left); in handle_zero_comparisons()
85 tmp = expr->right; in handle_zero_comparisons()
86 } else if (expr_is_zero(expr->right)) { in handle_zero_comparisons()
87 zero = strip_expr(expr->left); in handle_zero_comparisons()
[all …]
H A Dsmatch_kernel_user_data.c55 static void set_points_to_user_data(struct expression *expr);
69 static void match_save_states(struct expression *expr) in match_save_states() argument
75 static void match_restore_states(struct expression *expr) in match_restore_states() argument
105 static void extra_nomod_hook(const char *name, struct symbol *sym, struct expression *expr, struct … in extra_nomod_hook() argument
124 static bool binop_capped(struct expression *expr) in binop_capped() argument
129 if (expr->op == '-' && get_user_rl(expr->left, &left_rl)) { in binop_capped()
130 if (user_rl_capped(expr->left)) in binop_capped()
132 comparison = get_comparison(expr->left, expr->right); in binop_capped()
138 if (expr->op == '&' || expr->op == '%') { in binop_capped()
139 if (is_capped(expr->left) || is_capped(expr->right)) in binop_capped()
[all …]
H A Dinline.c39 static struct expression * dup_expression(struct expression *expr) in dup_expression() argument
41 struct expression *dup = alloc_expression(expr->pos, expr->type); in dup_expression()
42 *dup = *expr; in dup_expression()
78 static struct expression * copy_expression(struct expression *expr) in copy_expression() argument
80 if (!expr) in copy_expression()
83 switch (expr->type) { in copy_expression()
89 struct symbol *sym = copy_symbol(expr->pos, expr->symbol); in copy_expression()
90 if (sym == expr->symbol) in copy_expression()
92 expr = dup_expression(expr); in copy_expression()
93 expr->symbol = sym; in copy_expression()
[all …]
H A Dsmatch_math.c23 static bool get_rl_sval(struct expression *expr, int implied, int *recurse_cnt, struct range_list *…
24 static bool get_rl_internal(struct expression *expr, int implied, int *recurse_cnt, struct range_li…
25 static bool handle_variable(struct expression *expr, int implied, int *recurse_cnt, struct range_li…
26 static struct range_list *(*custom_handle_variable)(struct expression *expr);
28 static bool get_implied_value_internal(struct expression *expr, int *recurse_cnt, sval_t *res_sval);
29 static int get_absolute_rl_internal(struct expression *expr, struct range_list **rl, int *recurse_c…
66 struct expression *expr; in last_stmt_rl() local
75 expr = stmt->label_statement->expression; in last_stmt_rl()
79 expr = stmt->expression; in last_stmt_rl()
83 return get_rl_sval(expr, implied, recurse_cnt, res, res_sval); in last_stmt_rl()
[all …]
H A Dcheck_precedence.c23 static int is_bool(struct expression *expr) in is_bool() argument
27 type = get_type(expr); in is_bool()
35 static int is_bool_from_context(struct expression *expr) in is_bool_from_context() argument
39 if (!get_implied_max(expr, &sval) || sval.uvalue > 1) in is_bool_from_context()
41 if (!get_implied_min(expr, &sval) || sval.value < 0) in is_bool_from_context()
46 static int is_bool_op(struct expression *expr) in is_bool_op() argument
48 expr = strip_expr(expr); in is_bool_op()
50 if (expr->type == EXPR_PREOP && expr->op == '!') in is_bool_op()
52 if (expr->type == EXPR_COMPARE) in is_bool_op()
54 if (expr->type == EXPR_LOGICAL) in is_bool_op()
[all …]
H A Dsmatch_function_ptrs.c30 static char *get_from__symbol_get(struct expression *expr) in get_from__symbol_get() argument
40 expr = strip_expr(expr); in get_from__symbol_get()
42 if (expr->type != EXPR_CALL) in get_from__symbol_get()
44 if (!sym_name_is("__symbol_get", expr->fn)) in get_from__symbol_get()
46 arg = get_argument_from_call_expr(expr->args, 0); in get_from__symbol_get()
53 static int xxx_is_array(struct expression *expr) in xxx_is_array() argument
57 expr = strip_expr(expr); in xxx_is_array()
58 if (!expr) in xxx_is_array()
61 if (expr->type == EXPR_PREOP && expr->op == '*') { in xxx_is_array()
62 expr = strip_expr(expr->unop); in xxx_is_array()
[all …]
H A Devaluate.c50 static struct symbol *degenerate(struct expression *expr);
53 static inline int valid_expr_type(struct expression *expr) in valid_expr_type() argument
55 return expr && valid_type(expr->ctype); in valid_expr_type()
58 static inline int valid_subexpr_type(struct expression *expr) in valid_subexpr_type() argument
60 return valid_expr_type(expr->left) in valid_subexpr_type()
61 && valid_expr_type(expr->right); in valid_subexpr_type()
64 static struct symbol *evaluate_symbol_expression(struct expression *expr) in evaluate_symbol_expression() argument
67 struct symbol *sym = expr->symbol; in evaluate_symbol_expression()
71 expression_error(expr, "undefined identifier '%s'", show_ident(expr->symbol_name)); in evaluate_symbol_expression()
79 expression_error(expr, "identifier '%s' has no type", show_ident(expr->symbol_name)); in evaluate_symbol_expression()
[all …]
H A Dsmatch_type_val.c53 static void match_inline_start(struct expression *expr) in match_inline_start() argument
59 static void match_inline_end(struct expression *expr) in match_inline_end() argument
66 struct expression *expr; member
72 static int get_cached(struct expression *expr, struct range_list **rl, int *ret) in get_cached() argument
79 if (expr == cached_results[i].expr) { in get_cached()
91 int get_db_type_rl(struct expression *expr, struct range_list **rl) in get_db_type_rl() argument
99 if (get_cached(expr, rl, &ret)) in get_db_type_rl()
102 member = get_member_name(expr); in get_db_type_rl()
107 cached_results[res_idx].expr = expr; in get_db_type_rl()
115 type = get_type(expr); in get_db_type_rl()
[all …]
H A Dsmatch_expressions.c11 struct expression *expr; in get_cur_pos() local
14 expr = last_ptr_list((struct ptr_list *)big_expression_stack); in get_cur_pos()
16 if (expr) in get_cur_pos()
17 pos = expr->pos; in get_cur_pos()
27 struct expression *expr; in alloc_tmp_expression() local
29 expr = __alloc_tmp_expression(0); in alloc_tmp_expression()
30 expr->smatch_flags |= Tmp; in alloc_tmp_expression()
31 expr->type = type; in alloc_tmp_expression()
32 expr->pos = pos; in alloc_tmp_expression()
33 return expr; in alloc_tmp_expression()
[all …]
H A Dsmatch_buf_size.c34 static char *get_fn_name(struct expression *expr) in get_fn_name() argument
36 if (expr->type != EXPR_CALL) in get_fn_name()
38 if (expr->fn->type != EXPR_SYMBOL) in get_fn_name()
40 return expr_to_var(expr->fn); in get_fn_name()
43 static int is_allocation_function(struct expression *expr) in is_allocation_function() argument
48 func = get_fn_name(expr); in is_allocation_function()
126 static int bytes_per_element(struct expression *expr) in bytes_per_element() argument
130 if (!expr) in bytes_per_element()
132 if (expr->type == EXPR_STRING) in bytes_per_element()
134 if (expr->type == EXPR_PREOP && expr->op == '&') { in bytes_per_element()
[all …]
H A Dcheck_spectre.c23 extern void set_spectre_first_half(struct expression *expr);
27 static int is_write(struct expression *expr) in is_write() argument
32 static int is_read(struct expression *expr) in is_read() argument
37 if (is_write(expr)) in is_read()
40 last_parent = expr; in is_read()
41 while ((parent = expr_get_parent_expr(expr))){ in is_read()
50 if (parent->right == expr) in is_read()
52 if (parent->left == expr) in is_read()
55 expr = parent; in is_read()
65 static int is_harmless(struct expression *expr) in is_harmless() argument
[all …]
H A Dsmatch_mtag.c95 static char *get_allocator_info(struct expression *expr, struct smatch_state *state) in get_allocator_info() argument
99 if (expr->type != EXPR_ASSIGNMENT) in get_allocator_info()
104 expr = strip_expr(expr->right); in get_allocator_info()
105 if (expr->type != EXPR_CALL || in get_allocator_info()
106 !expr->fn || in get_allocator_info()
107 expr->fn->type != EXPR_SYMBOL) in get_allocator_info()
109 return expr_to_str(expr->fn); in get_allocator_info()
112 static void update_mtag_info(struct expression *expr, mtag_t tag, in update_mtag_info() argument
120 allocator = get_allocator_info(expr, state); in update_mtag_info()
125 struct smatch_state *get_mtag_return(struct expression *expr, struct smatch_state *state) in get_mtag_return() argument
[all …]
H A Dsmatch_recurse.c22 static int recurse(struct expression *expr, in recurse() argument
23 int (func)(struct expression *expr, void *p), in recurse() argument
28 if (!expr) in recurse()
31 ret = func(expr, param); in recurse()
39 switch (expr->type) { in recurse()
41 ret = recurse(expr->unop, func, param, nr); in recurse()
44 ret = recurse(expr->unop, func, param, nr); in recurse()
53 ret = recurse(expr->left, func, param, nr); in recurse()
56 ret = recurse(expr->right, func, param, nr); in recurse()
59 ret = recurse(expr->right, func, param, nr); in recurse()
[all …]
H A Dcheck_or_vs_and.c25 static int does_inc_dec(struct expression *expr) in does_inc_dec() argument
27 if (expr->type == EXPR_PREOP || expr->type == EXPR_POSTOP) { in does_inc_dec()
28 if (expr->op == SPECIAL_INCREMENT || expr->op == SPECIAL_DECREMENT) in does_inc_dec()
30 return does_inc_dec(expr->unop); in does_inc_dec()
64 static void check_or(struct expression *expr) in check_or() argument
68 left = strip_expr(expr->left); in check_or()
69 right = strip_expr(expr->right); in check_or()
81 static int is_kernel_min_macro(struct expression *expr) in is_kernel_min_macro() argument
87 macro = get_macro_name(expr->pos); in is_kernel_min_macro()
98 static void check_and(struct expression *expr) in check_and() argument
[all …]
H A Dcheck_signed.c34 static void match_assign(struct expression *expr) in match_assign() argument
44 if (expr->op == SPECIAL_AND_ASSIGN || expr->op == SPECIAL_OR_ASSIGN) in match_assign()
47 sym = get_type(expr->left); in match_assign()
54 if (!get_implied_value(expr->right, &sval)) in match_assign()
60 left_name = expr_to_str(expr->left); in match_assign()
61 right_name = expr_to_str(expr->right); in match_assign()
70 if (expr->right->type == EXPR_PREOP && expr->right->op == '~') in match_assign()
72 if (expr->op == SPECIAL_SUB_ASSIGN || expr->op == SPECIAL_ADD_ASSIGN) in match_assign()
76 left_name = expr_to_str(expr->left); in match_assign()
88 static int cap_gt_zero_and_lt(struct expression *expr) in cap_gt_zero_and_lt() argument
[all …]
H A Dsmatch_integer_overflow.c25 static struct smatch_state *safe_state(struct expression *expr) in safe_state() argument
30 expr = strip_expr(expr); in safe_state()
32 state->data = expr; in safe_state()
36 static char *save_links(struct expression *expr, struct symbol **sym, struct var_sym_list **vsl) in save_links() argument
41 name = expr_to_chunk_sym_vsl(expr, sym, vsl); in save_links()
54 static void match_divide(struct expression *expr) in match_divide() argument
63 if (expr->type != EXPR_COMPARE) in match_divide()
65 if (expr->op != '>' && expr->op != SPECIAL_UNSIGNED_GT && in match_divide()
66 expr->op != SPECIAL_GTE && expr->op != SPECIAL_UNSIGNED_GTE) in match_divide()
69 left = strip_parens(expr->left); in match_divide()
[all …]
H A Dcheck_leaks.c47 static void set_parent(struct expression *expr, struct smatch_state *state);
68 static char *get_parent_from_expr(struct expression *expr, struct symbol **sym) in get_parent_from_expr() argument
72 expr = strip_expr(expr); in get_parent_from_expr()
74 name = expr_to_str_sym(expr, sym); in get_parent_from_expr()
83 static int is_local(struct expression *expr) in is_local() argument
89 name = expr_to_str_sym(expr, &sym); in is_local()
100 static int is_param(struct expression *expr) in is_param() argument
107 name = expr_to_str_sym(expr, &sym); in is_param()
122 static void match_alloc(const char *fn, struct expression *expr, void *unused) in match_alloc() argument
124 if (!is_local(expr->left)) in match_alloc()
[all …]
H A Dcheck_arm64_tagged.c22 static bool expr_has_memory_addr(struct expression *expr);
28 static void match_assign(struct expression *expr) in match_assign() argument
33 left_name = expr_to_var_sym(expr->left, &left_sym); in match_assign()
43 if (expr_has_memory_addr(expr->right)) in match_assign()
53 static bool expr_has_untagged_symbol(struct expression *expr) in expr_has_untagged_symbol() argument
58 if (expr->type != EXPR_SYMBOL) in expr_has_untagged_symbol()
61 name = expr_to_var_sym(expr, &sym); in expr_has_untagged_symbol()
72 static bool expr_has_untagged_member(struct expression *expr) in expr_has_untagged_member() argument
74 if (expr->type != EXPR_DEREF) in expr_has_untagged_member()
77 if (!strcmp(expr->member->name, "vm_start") || in expr_has_untagged_member()
[all …]
H A Dcheck_get_user_overflow.c33 static void match_condition(struct expression *expr) in match_condition() argument
45 if (expr->type != EXPR_COMPARE) in match_condition()
48 switch (expr->op) { in match_condition()
83 if (get_state_expr(my_max_id, expr->left)) { in match_condition()
84 set_true_false_states_expr(my_max_id, expr->left, left_max_true, left_max_false); in match_condition()
85 set_true_false_states_expr(my_min_id, expr->left, left_min_true, left_min_false); in match_condition()
87 if (get_state_expr(my_max_id, expr->right)) { in match_condition()
88 set_true_false_states_expr(my_max_id, expr->right, right_max_true, right_max_false); in match_condition()
89 set_true_false_states_expr(my_min_id, expr->right, right_min_true, right_min_false); in match_condition()
93 static void match_normal_assign(struct expression *expr) in match_normal_assign() argument
[all …]
H A Dsmatch_struct_assignment.c69 static struct symbol *get_struct_type(struct expression *expr) in get_struct_type() argument
73 type = get_type(expr); in get_struct_type()
113 static struct expression *remove_addr(struct expression *expr) in remove_addr() argument
117 expr = strip_expr(expr); in remove_addr()
118 if (!expr) in remove_addr()
121 if (expr->type == EXPR_PREOP && expr->op == '&') in remove_addr()
122 return strip_expr(expr->unop); in remove_addr()
123 type = get_type(expr); in remove_addr()
125 return expr; in remove_addr()
127 return expr; in remove_addr()
[all …]
H A Dcheck_memcpy_overflow.c33 static int get_the_max(struct expression *expr, sval_t *sval) in get_the_max() argument
37 if (get_hard_max(expr, sval)) in get_the_max()
41 if (get_fuzzy_max(expr, sval)) in get_the_max()
43 if (!get_user_rl(expr, &rl)) in get_the_max()
49 static int bytes_to_end_of_struct(struct expression *expr) in bytes_to_end_of_struct() argument
56 if (expr->type == EXPR_PREOP && expr->op == '&') in bytes_to_end_of_struct()
57 expr = strip_parens(expr->unop); in bytes_to_end_of_struct()
59 type = get_type(expr); in bytes_to_end_of_struct()
63 if (expr->type != EXPR_DEREF || !expr->member) in bytes_to_end_of_struct()
65 deref = expr->deref; in bytes_to_end_of_struct()
[all …]
/illumos-gate/usr/src/lib/libsqlite/test/
H A Dexpr.test15 # $Id: expr.test,v 1.31 2004/03/03 01:51:25 drh Exp $
24 proc test_expr {name settings expr result} {
27 } $settings $expr] $result
30 test_expr expr-1.1 {i1=10, i2=20} {i1+i2} 30
31 test_expr expr-1.2 {i1=10, i2=20} {i1-i2} -10
32 test_expr expr-1.3 {i1=10, i2=20} {i1*i2} 200
33 test_expr expr-1.4 {i1=10, i2=20} {i1/i2} 0.5
34 test_expr expr-1.5 {i1=10, i2=20} {i2/i1} 2
35 test_expr expr-1.6 {i1=10, i2=20} {i2<i1} 0
36 test_expr expr-1.7 {i1=10, i2=20} {i2<=i1} 0
[all …]
/illumos-gate/usr/src/cmd/geniconvtbl/
H A Ddisassemble.c1185 itm_expr_t *expr; in dump_expr() local
1188 expr = (itm_expr_t *)ADDR(expr_place); in dump_expr()
1191 switch (expr->type) { in dump_expr()
1202 printi(0, "%ld", expr->data.itm_exnum); in dump_expr()
1205 data = expr->data.value; in dump_expr()
1212 printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0])); in dump_expr()
1216 dump_expr(itm_hdr, expr->data.operand[0]); in dump_expr()
1220 printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr); in dump_expr()
1221 if (0 == expr->data.operand[0].itm_ptr) { in dump_expr()
1236 dump_expr(itm_hdr, expr->data.operand[0]); in dump_expr()
[all …]

12345678910>>...19