Lines Matching refs:expr
21 static struct expr *expr_eliminate_yn(struct expr *e);
33 static struct expr *expr_lookup(enum expr_type type, void *l, void *r) in expr_lookup()
35 struct expr *e; in expr_lookup()
57 struct expr *expr_alloc_symbol(struct symbol *sym) in expr_alloc_symbol()
62 struct expr *expr_alloc_one(enum expr_type type, struct expr *ce) in expr_alloc_one()
67 struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2) in expr_alloc_two()
72 struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2) in expr_alloc_comp()
77 struct expr *expr_alloc_and(struct expr *e1, struct expr *e2) in expr_alloc_and()
84 struct expr *expr_alloc_or(struct expr *e1, struct expr *e2) in expr_alloc_or()
101 static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2) in __expr_eliminate_eq()
103 struct expr *l, *r; in __expr_eliminate_eq()
108 l = (*ep1)->left.expr; in __expr_eliminate_eq()
109 r = (*ep1)->right.expr; in __expr_eliminate_eq()
116 l = (*ep2)->left.expr; in __expr_eliminate_eq()
117 r = (*ep2)->right.expr; in __expr_eliminate_eq()
179 void expr_eliminate_eq(struct expr **ep1, struct expr **ep2) in expr_eliminate_eq()
207 bool expr_eq(struct expr *e1, struct expr *e2) in expr_eq()
232 return expr_eq(e1->left.expr, e2->left.expr); in expr_eq()
267 static struct expr *expr_eliminate_yn(struct expr *e) in expr_eliminate_yn()
269 struct expr *l, *r; in expr_eliminate_yn()
273 l = expr_eliminate_yn(e->left.expr); in expr_eliminate_yn()
274 r = expr_eliminate_yn(e->right.expr); in expr_eliminate_yn()
289 l = expr_eliminate_yn(e->left.expr); in expr_eliminate_yn()
290 r = expr_eliminate_yn(e->right.expr); in expr_eliminate_yn()
313 static struct expr *expr_join_or(struct expr *e1, struct expr *e2) in expr_join_or()
315 struct expr *tmp; in expr_join_or()
325 tmp = e1->left.expr; in expr_join_or()
332 if (e2->left.expr->type != E_SYMBOL) in expr_join_or()
334 sym2 = e2->left.expr->left.sym; in expr_join_or()
363 if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) || in expr_join_or()
364 (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL)) in expr_join_or()
378 static struct expr *expr_join_and(struct expr *e1, struct expr *e2) in expr_join_and()
380 struct expr *tmp; in expr_join_and()
390 tmp = e1->left.expr; in expr_join_and()
397 if (e2->left.expr->type != E_SYMBOL) in expr_join_and()
399 sym2 = e2->left.expr->left.sym; in expr_join_and()
479 static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2) in expr_eliminate_dups1()
481 struct expr *tmp, *l, *r; in expr_eliminate_dups1()
486 l = (*ep1)->left.expr; in expr_eliminate_dups1()
487 r = (*ep1)->right.expr; in expr_eliminate_dups1()
494 l = (*ep2)->left.expr; in expr_eliminate_dups1()
495 r = (*ep2)->right.expr; in expr_eliminate_dups1()
537 struct expr *expr_eliminate_dups(struct expr *e) in expr_eliminate_dups()
545 struct expr *l, *r; in expr_eliminate_dups()
550 l = expr_eliminate_dups(e->left.expr); in expr_eliminate_dups()
551 r = expr_eliminate_dups(e->right.expr); in expr_eliminate_dups()
593 struct expr *expr_transform(struct expr *e) in expr_transform()
608 expr_transform(e->left.expr), in expr_transform()
609 expr_transform(e->right.expr)); in expr_transform()
649 e = expr_alloc_one(E_NOT, e->left.expr); in expr_transform()
654 switch (e->left.expr->type) { in expr_transform()
657 e = e->left.expr->left.expr; in expr_transform()
662 e = expr_alloc_comp(e->left.expr->type == E_EQUAL ? E_UNEQUAL : E_EQUAL, in expr_transform()
663 e->left.expr->left.sym, in expr_transform()
664 e->left.expr->right.sym); in expr_transform()
669 e = expr_alloc_comp(e->left.expr->type == E_LEQ ? E_GTH : E_LTH, in expr_transform()
670 e->left.expr->left.sym, in expr_transform()
671 e->left.expr->right.sym); in expr_transform()
676 e = expr_alloc_comp(e->left.expr->type == E_LTH ? E_GEQ : E_LEQ, in expr_transform()
677 e->left.expr->left.sym, in expr_transform()
678 e->left.expr->right.sym); in expr_transform()
682 e = expr_alloc_and(expr_alloc_one(E_NOT, e->left.expr->left.expr), in expr_transform()
683 expr_alloc_one(E_NOT, e->left.expr->right.expr)); in expr_transform()
688 e = expr_alloc_or(expr_alloc_one(E_NOT, e->left.expr->left.expr), in expr_transform()
689 expr_alloc_one(E_NOT, e->left.expr->right.expr)); in expr_transform()
693 if (e->left.expr->left.sym == &symbol_yes) in expr_transform()
696 else if (e->left.expr->left.sym == &symbol_mod) in expr_transform()
699 else if (e->left.expr->left.sym == &symbol_no) in expr_transform()
713 bool expr_contains_symbol(struct expr *dep, struct symbol *sym) in expr_contains_symbol()
721 return expr_contains_symbol(dep->left.expr, sym) || in expr_contains_symbol()
722 expr_contains_symbol(dep->right.expr, sym); in expr_contains_symbol()
734 return expr_contains_symbol(dep->left.expr, sym); in expr_contains_symbol()
741 bool expr_depends_symbol(struct expr *dep, struct symbol *sym) in expr_depends_symbol()
748 return expr_depends_symbol(dep->left.expr, sym) || in expr_depends_symbol()
749 expr_depends_symbol(dep->right.expr, sym); in expr_depends_symbol()
784 struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym) in expr_trans_compare()
786 struct expr *e1, *e2; in expr_trans_compare()
796 e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); in expr_trans_compare()
797 e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); in expr_trans_compare()
806 e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); in expr_trans_compare()
807 e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); in expr_trans_compare()
816 return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym); in expr_trans_compare()
891 static tristate __expr_calc_value(struct expr *e) in __expr_calc_value()
904 val1 = expr_calc_value(e->left.expr); in __expr_calc_value()
905 val2 = expr_calc_value(e->right.expr); in __expr_calc_value()
908 val1 = expr_calc_value(e->left.expr); in __expr_calc_value()
909 val2 = expr_calc_value(e->right.expr); in __expr_calc_value()
912 val1 = expr_calc_value(e->left.expr); in __expr_calc_value()
967 tristate expr_calc_value(struct expr *e) in expr_calc_value()
985 struct expr *e; in expr_invalidate_all()
1022 void expr_print(const struct expr *e, in expr_print()
1042 expr_print(e->left.expr, fn, data, E_NOT); in expr_print()
1079 expr_print(e->left.expr, fn, data, E_OR); in expr_print()
1081 expr_print(e->right.expr, fn, data, E_OR); in expr_print()
1084 expr_print(e->left.expr, fn, data, E_AND); in expr_print()
1086 expr_print(e->right.expr, fn, data, E_AND); in expr_print()
1112 void expr_fprint(struct expr *e, FILE *out) in expr_fprint()
1147 void expr_gstr_print(const struct expr *e, struct gstr *gs) in expr_gstr_print()
1157 static void expr_print_revdep(struct expr *e, in expr_print_revdep()
1162 expr_print_revdep(e->left.expr, fn, data, pr_type, title); in expr_print_revdep()
1163 expr_print_revdep(e->right.expr, fn, data, pr_type, title); in expr_print_revdep()
1176 void expr_gstr_print_revdep(struct expr *e, struct gstr *gs, in expr_gstr_print_revdep()