• Home
  • Raw
  • Download

Lines Matching full:e1

33 struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2)  in expr_alloc_two()  argument
38 e->left.expr = e1; in expr_alloc_two()
53 struct expr *expr_alloc_and(struct expr *e1, struct expr *e2) in expr_alloc_and() argument
55 if (!e1) in expr_alloc_and()
57 return e2 ? expr_alloc_two(E_AND, e1, e2) : e1; in expr_alloc_and()
60 struct expr *expr_alloc_or(struct expr *e1, struct expr *e2) in expr_alloc_or() argument
62 if (!e1) in expr_alloc_or()
64 return e2 ? expr_alloc_two(E_OR, e1, e2) : e1; in expr_alloc_or()
132 #define e1 (*ep1) macro
137 if (e1->type == type) { in __expr_eliminate_eq()
138 __expr_eliminate_eq(type, &e1->left.expr, &e2); in __expr_eliminate_eq()
139 __expr_eliminate_eq(type, &e1->right.expr, &e2); in __expr_eliminate_eq()
143 __expr_eliminate_eq(type, &e1, &e2->left.expr); in __expr_eliminate_eq()
144 __expr_eliminate_eq(type, &e1, &e2->right.expr); in __expr_eliminate_eq()
147 if (e1->type == E_SYMBOL && e2->type == E_SYMBOL && in __expr_eliminate_eq()
148 e1->left.sym == e2->left.sym && in __expr_eliminate_eq()
149 (e1->left.sym == &symbol_yes || e1->left.sym == &symbol_no)) in __expr_eliminate_eq()
151 if (!expr_eq(e1, e2)) in __expr_eliminate_eq()
154 expr_free(e1); expr_free(e2); in __expr_eliminate_eq()
157 e1 = expr_alloc_symbol(&symbol_no); in __expr_eliminate_eq()
161 e1 = expr_alloc_symbol(&symbol_yes); in __expr_eliminate_eq()
171 if (!e1 || !e2) in expr_eliminate_eq()
173 switch (e1->type) { in expr_eliminate_eq()
176 __expr_eliminate_eq(e1->type, ep1, ep2); in expr_eliminate_eq()
180 if (e1->type != e2->type) switch (e2->type) { in expr_eliminate_eq()
187 e1 = expr_eliminate_yn(e1); in expr_eliminate_eq()
191 #undef e1
194 int expr_eq(struct expr *e1, struct expr *e2) in expr_eq() argument
198 if (e1->type != e2->type) in expr_eq()
200 switch (e1->type) { in expr_eq()
203 return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym; in expr_eq()
205 return e1->left.sym == e2->left.sym; in expr_eq()
207 return expr_eq(e1->left.expr, e2->left.expr); in expr_eq()
210 e1 = expr_copy(e1); in expr_eq()
213 expr_eliminate_eq(&e1, &e2); in expr_eq()
214 res = (e1->type == E_SYMBOL && e2->type == E_SYMBOL && in expr_eq()
215 e1->left.sym == e2->left.sym); in expr_eq()
216 expr_free(e1); in expr_eq()
227 expr_fprint(e1, stdout); in expr_eq()
349 * e1 || e2 -> ?
351 struct expr *expr_join_or(struct expr *e1, struct expr *e2) in expr_join_or() argument
356 if (expr_eq(e1, e2)) in expr_join_or()
357 return expr_copy(e1); in expr_join_or()
358 if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT) in expr_join_or()
362 if (e1->type == E_NOT) { in expr_join_or()
363 tmp = e1->left.expr; in expr_join_or()
368 sym1 = e1->left.sym; in expr_join_or()
380 if (e1->type == E_EQUAL && e2->type == E_EQUAL && in expr_join_or()
381 ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || in expr_join_or()
382 (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) { in expr_join_or()
386 if (e1->type == E_EQUAL && e2->type == E_EQUAL && in expr_join_or()
387 ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || in expr_join_or()
388 (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) { in expr_join_or()
392 if (e1->type == E_EQUAL && e2->type == E_EQUAL && in expr_join_or()
393 ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || in expr_join_or()
394 (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) { in expr_join_or()
400 if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) || in expr_join_or()
401 (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL)) in expr_join_or()
407 expr_fprint(e1, stdout); in expr_join_or()
415 struct expr *expr_join_and(struct expr *e1, struct expr *e2) in expr_join_and() argument
420 if (expr_eq(e1, e2)) in expr_join_and()
421 return expr_copy(e1); in expr_join_and()
422 if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT) in expr_join_and()
426 if (e1->type == E_NOT) { in expr_join_and()
427 tmp = e1->left.expr; in expr_join_and()
432 sym1 = e1->left.sym; in expr_join_and()
444 if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) || in expr_join_and()
445 (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes)) in expr_join_and()
449 if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) || in expr_join_and()
450 (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no)) in expr_join_and()
454 if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) || in expr_join_and()
455 (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod)) in expr_join_and()
460 if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) { in expr_join_and()
462 sym2 = e1->right.sym; in expr_join_and()
467 if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) { in expr_join_and()
470 if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) in expr_join_and()
471 return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) in expr_join_and()
474 if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && in expr_join_and()
475 ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || in expr_join_and()
476 (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) in expr_join_and()
480 if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && in expr_join_and()
481 ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || in expr_join_and()
482 (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) in expr_join_and()
486 if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && in expr_join_and()
487 ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || in expr_join_and()
488 (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) in expr_join_and()
492 if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) || in expr_join_and()
493 (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) || in expr_join_and()
494 (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) || in expr_join_and()
495 (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes)) in expr_join_and()
501 expr_fprint(e1, stdout); in expr_join_and()
511 #define e1 (*ep1) in expr_eliminate_dups1() macro
515 if (e1->type == type) { in expr_eliminate_dups1()
516 expr_eliminate_dups1(type, &e1->left.expr, &e2); in expr_eliminate_dups1()
517 expr_eliminate_dups1(type, &e1->right.expr, &e2); in expr_eliminate_dups1()
521 expr_eliminate_dups1(type, &e1, &e2->left.expr); in expr_eliminate_dups1()
522 expr_eliminate_dups1(type, &e1, &e2->right.expr); in expr_eliminate_dups1()
525 if (e1 == e2) in expr_eliminate_dups1()
528 switch (e1->type) { in expr_eliminate_dups1()
530 expr_eliminate_dups1(e1->type, &e1, &e1); in expr_eliminate_dups1()
537 tmp = expr_join_or(e1, e2); in expr_eliminate_dups1()
539 expr_free(e1); expr_free(e2); in expr_eliminate_dups1()
540 e1 = expr_alloc_symbol(&symbol_no); in expr_eliminate_dups1()
546 tmp = expr_join_and(e1, e2); in expr_eliminate_dups1()
548 expr_free(e1); expr_free(e2); in expr_eliminate_dups1()
549 e1 = expr_alloc_symbol(&symbol_yes); in expr_eliminate_dups1()
557 #undef e1 in expr_eliminate_dups1()
563 #define e1 (*ep1) in expr_eliminate_dups2() macro
567 if (e1->type == type) { in expr_eliminate_dups2()
568 expr_eliminate_dups2(type, &e1->left.expr, &e2); in expr_eliminate_dups2()
569 expr_eliminate_dups2(type, &e1->right.expr, &e2); in expr_eliminate_dups2()
573 expr_eliminate_dups2(type, &e1, &e2->left.expr); in expr_eliminate_dups2()
574 expr_eliminate_dups2(type, &e1, &e2->right.expr); in expr_eliminate_dups2()
576 if (e1 == e2) in expr_eliminate_dups2()
579 switch (e1->type) { in expr_eliminate_dups2()
581 expr_eliminate_dups2(e1->type, &e1, &e1); in expr_eliminate_dups2()
583 tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); in expr_eliminate_dups2()
587 expr_free(e1); in expr_eliminate_dups2()
588 e1 = expr_alloc_symbol(&symbol_no); in expr_eliminate_dups2()
596 expr_eliminate_dups2(e1->type, &e1, &e1); in expr_eliminate_dups2()
598 tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); in expr_eliminate_dups2()
602 expr_free(e1); in expr_eliminate_dups2()
603 e1 = expr_alloc_symbol(&symbol_yes); in expr_eliminate_dups2()
613 #undef e1 in expr_eliminate_dups2()
855 #define e1 (*ep1) in expr_extract_eq() macro
857 if (e1->type == type) { in expr_extract_eq()
858 expr_extract_eq(type, ep, &e1->left.expr, &e2); in expr_extract_eq()
859 expr_extract_eq(type, ep, &e1->right.expr, &e2); in expr_extract_eq()
867 if (expr_eq(e1, e2)) { in expr_extract_eq()
868 *ep = *ep ? expr_alloc_two(type, *ep, e1) : e1; in expr_extract_eq()
871 e1 = expr_alloc_symbol(&symbol_yes); in expr_extract_eq()
874 e1 = expr_alloc_symbol(&symbol_no); in expr_extract_eq()
878 #undef e1 in expr_extract_eq()
884 struct expr *e1, *e2; in expr_trans_compare() local
894 e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); in expr_trans_compare()
897 e = expr_alloc_two(E_AND, e1, e2); in expr_trans_compare()
899 e = expr_alloc_two(E_OR, e1, e2); in expr_trans_compare()
904 e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); in expr_trans_compare()
907 e = expr_alloc_two(E_OR, e1, e2); in expr_trans_compare()
909 e = expr_alloc_two(E_AND, e1, e2); in expr_trans_compare()