Lines Matching refs:e2
67 struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2) in expr_alloc_two() argument
69 return expr_lookup(type, e1, e2); in expr_alloc_two()
77 struct expr *expr_alloc_and(struct expr *e1, struct expr *e2) in expr_alloc_and() argument
80 return e2; in expr_alloc_and()
81 return e2 ? expr_alloc_two(E_AND, e1, e2) : e1; in expr_alloc_and()
84 struct expr *expr_alloc_or(struct expr *e1, struct expr *e2) in expr_alloc_or() argument
87 return e2; in expr_alloc_or()
88 return e2 ? expr_alloc_two(E_OR, e1, e2) : e1; in expr_alloc_or()
207 bool expr_eq(struct expr *e1, struct expr *e2) in expr_eq() argument
216 if (!e1 || !e2) in expr_eq()
217 return expr_is_yes(e1) && expr_is_yes(e2); in expr_eq()
219 if (e1->type != e2->type) in expr_eq()
228 return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym; in expr_eq()
230 return e1->left.sym == e2->left.sym; in expr_eq()
232 return expr_eq(e1->left.expr, e2->left.expr); in expr_eq()
236 expr_eliminate_eq(&e1, &e2); in expr_eq()
237 res = (e1->type == E_SYMBOL && e2->type == E_SYMBOL && in expr_eq()
238 e1->left.sym == e2->left.sym); in expr_eq()
249 expr_fprint(e2, stdout); in expr_eq()
313 static struct expr *expr_join_or(struct expr *e1, struct expr *e2) in expr_join_or() argument
318 if (expr_eq(e1, e2)) in expr_join_or()
322 if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT) in expr_join_or()
331 if (e2->type == E_NOT) { 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()
336 sym2 = e2->left.sym; in expr_join_or()
342 if (e1->type == E_EQUAL && e2->type == E_EQUAL && in expr_join_or()
343 ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || in expr_join_or()
344 (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) { in expr_join_or()
348 if (e1->type == E_EQUAL && e2->type == E_EQUAL && in expr_join_or()
349 ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || in expr_join_or()
350 (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) { in expr_join_or()
354 if (e1->type == E_EQUAL && e2->type == E_EQUAL && in expr_join_or()
355 ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || in expr_join_or()
356 (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) { 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()
372 expr_fprint(e2, stdout); in expr_join_or()
378 static struct expr *expr_join_and(struct expr *e1, struct expr *e2) in expr_join_and() argument
383 if (expr_eq(e1, e2)) in expr_join_and()
387 if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT) in expr_join_and()
396 if (e2->type == E_NOT) { 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()
401 sym2 = e2->left.sym; in expr_join_and()
407 if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) || in expr_join_and()
408 (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes)) in expr_join_and()
412 if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) || in expr_join_and()
413 (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no)) in expr_join_and()
417 if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) || in expr_join_and()
418 (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod)) in expr_join_and()
423 if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) { in expr_join_and()
426 if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) in expr_join_and()
427 return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) in expr_join_and()
430 if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) { in expr_join_and()
432 sym2 = e2->right.sym; in expr_join_and()
437 if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && in expr_join_and()
438 ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || in expr_join_and()
439 (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) in expr_join_and()
443 if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && in expr_join_and()
444 ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || in expr_join_and()
445 (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) in expr_join_and()
449 if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && in expr_join_and()
450 ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || in expr_join_and()
451 (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) in expr_join_and()
455 if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) || in expr_join_and()
456 (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) || in expr_join_and()
457 (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) || in expr_join_and()
458 (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes)) in expr_join_and()
466 expr_fprint(e2, stdout); in expr_join_and()
786 struct expr *e1, *e2; in expr_trans_compare() local
797 e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); in expr_trans_compare()
799 e = expr_alloc_two(E_AND, e1, e2); in expr_trans_compare()
801 e = expr_alloc_two(E_OR, e1, e2); in expr_trans_compare()
807 e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); in expr_trans_compare()
809 e = expr_alloc_two(E_OR, e1, e2); in expr_trans_compare()
811 e = expr_alloc_two(E_AND, e1, e2); in expr_trans_compare()