e1                 30 scripts/kconfig/expr.c struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2)
e1                 34 scripts/kconfig/expr.c 	e->left.expr = e1;
e1                 48 scripts/kconfig/expr.c struct expr *expr_alloc_and(struct expr *e1, struct expr *e2)
e1                 50 scripts/kconfig/expr.c 	if (!e1)
e1                 52 scripts/kconfig/expr.c 	return e2 ? expr_alloc_two(E_AND, e1, e2) : e1;
e1                 55 scripts/kconfig/expr.c struct expr *expr_alloc_or(struct expr *e1, struct expr *e2)
e1                 57 scripts/kconfig/expr.c 	if (!e1)
e1                 59 scripts/kconfig/expr.c 	return e2 ? expr_alloc_two(E_OR, e1, e2) : e1;
e1                132 scripts/kconfig/expr.c 	if (e1->type == type) {
e1                133 scripts/kconfig/expr.c 		__expr_eliminate_eq(type, &e1->left.expr, &e2);
e1                134 scripts/kconfig/expr.c 		__expr_eliminate_eq(type, &e1->right.expr, &e2);
e1                138 scripts/kconfig/expr.c 		__expr_eliminate_eq(type, &e1, &e2->left.expr);
e1                139 scripts/kconfig/expr.c 		__expr_eliminate_eq(type, &e1, &e2->right.expr);
e1                142 scripts/kconfig/expr.c 	if (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&
e1                143 scripts/kconfig/expr.c 	    e1->left.sym == e2->left.sym &&
e1                144 scripts/kconfig/expr.c 	    (e1->left.sym == &symbol_yes || e1->left.sym == &symbol_no))
e1                146 scripts/kconfig/expr.c 	if (!expr_eq(e1, e2))
e1                149 scripts/kconfig/expr.c 	expr_free(e1); expr_free(e2);
e1                152 scripts/kconfig/expr.c 		e1 = expr_alloc_symbol(&symbol_no);
e1                156 scripts/kconfig/expr.c 		e1 = expr_alloc_symbol(&symbol_yes);
e1                166 scripts/kconfig/expr.c 	if (!e1 || !e2)
e1                168 scripts/kconfig/expr.c 	switch (e1->type) {
e1                171 scripts/kconfig/expr.c 		__expr_eliminate_eq(e1->type, ep1, ep2);
e1                175 scripts/kconfig/expr.c 	if (e1->type != e2->type) switch (e2->type) {
e1                182 scripts/kconfig/expr.c 	e1 = expr_eliminate_yn(e1);
e1                189 scripts/kconfig/expr.c int expr_eq(struct expr *e1, struct expr *e2)
e1                193 scripts/kconfig/expr.c 	if (e1->type != e2->type)
e1                195 scripts/kconfig/expr.c 	switch (e1->type) {
e1                198 scripts/kconfig/expr.c 		return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym;
e1                200 scripts/kconfig/expr.c 		return e1->left.sym == e2->left.sym;
e1                202 scripts/kconfig/expr.c 		return expr_eq(e1->left.expr, e2->left.expr);
e1                205 scripts/kconfig/expr.c 		e1 = expr_copy(e1);
e1                208 scripts/kconfig/expr.c 		expr_eliminate_eq(&e1, &e2);
e1                209 scripts/kconfig/expr.c 		res = (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&
e1                210 scripts/kconfig/expr.c 		       e1->left.sym == e2->left.sym);
e1                211 scripts/kconfig/expr.c 		expr_free(e1);
e1                222 scripts/kconfig/expr.c 		expr_fprint(e1, stdout);
e1                346 scripts/kconfig/expr.c static struct expr *expr_join_or(struct expr *e1, struct expr *e2)
e1                351 scripts/kconfig/expr.c 	if (expr_eq(e1, e2))
e1                352 scripts/kconfig/expr.c 		return expr_copy(e1);
e1                353 scripts/kconfig/expr.c 	if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT)
e1                357 scripts/kconfig/expr.c 	if (e1->type == E_NOT) {
e1                358 scripts/kconfig/expr.c 		tmp = e1->left.expr;
e1                363 scripts/kconfig/expr.c 		sym1 = e1->left.sym;
e1                375 scripts/kconfig/expr.c 		if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
e1                376 scripts/kconfig/expr.c 		    ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||
e1                377 scripts/kconfig/expr.c 		     (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) {
e1                381 scripts/kconfig/expr.c 		if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
e1                382 scripts/kconfig/expr.c 		    ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||
e1                383 scripts/kconfig/expr.c 		     (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) {
e1                387 scripts/kconfig/expr.c 		if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
e1                388 scripts/kconfig/expr.c 		    ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||
e1                389 scripts/kconfig/expr.c 		     (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) {
e1                395 scripts/kconfig/expr.c 		if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) ||
e1                396 scripts/kconfig/expr.c 		    (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL))
e1                402 scripts/kconfig/expr.c 		expr_fprint(e1, stdout);
e1                410 scripts/kconfig/expr.c static struct expr *expr_join_and(struct expr *e1, struct expr *e2)
e1                415 scripts/kconfig/expr.c 	if (expr_eq(e1, e2))
e1                416 scripts/kconfig/expr.c 		return expr_copy(e1);
e1                417 scripts/kconfig/expr.c 	if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT)
e1                421 scripts/kconfig/expr.c 	if (e1->type == E_NOT) {
e1                422 scripts/kconfig/expr.c 		tmp = e1->left.expr;
e1                427 scripts/kconfig/expr.c 		sym1 = e1->left.sym;
e1                439 scripts/kconfig/expr.c 	if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) ||
e1                440 scripts/kconfig/expr.c 	    (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes))
e1                444 scripts/kconfig/expr.c 	if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) ||
e1                445 scripts/kconfig/expr.c 	    (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no))
e1                449 scripts/kconfig/expr.c 	if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) ||
e1                450 scripts/kconfig/expr.c 	    (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod))
e1                455 scripts/kconfig/expr.c 		if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) {
e1                457 scripts/kconfig/expr.c 			sym2 = e1->right.sym;
e1                462 scripts/kconfig/expr.c 		if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) {
e1                465 scripts/kconfig/expr.c 			if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))
e1                466 scripts/kconfig/expr.c 				return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)
e1                469 scripts/kconfig/expr.c 		if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
e1                470 scripts/kconfig/expr.c 			   ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||
e1                471 scripts/kconfig/expr.c 			    (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes)))
e1                475 scripts/kconfig/expr.c 		if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
e1                476 scripts/kconfig/expr.c 			   ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||
e1                477 scripts/kconfig/expr.c 			    (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes)))
e1                481 scripts/kconfig/expr.c 		if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
e1                482 scripts/kconfig/expr.c 			   ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||
e1                483 scripts/kconfig/expr.c 			    (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod)))
e1                487 scripts/kconfig/expr.c 		if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) ||
e1                488 scripts/kconfig/expr.c 		    (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) ||
e1                489 scripts/kconfig/expr.c 		    (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) ||
e1                490 scripts/kconfig/expr.c 		    (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes))
e1                496 scripts/kconfig/expr.c 		expr_fprint(e1, stdout);
e1                510 scripts/kconfig/expr.c 	if (e1->type == type) {
e1                511 scripts/kconfig/expr.c 		expr_eliminate_dups1(type, &e1->left.expr, &e2);
e1                512 scripts/kconfig/expr.c 		expr_eliminate_dups1(type, &e1->right.expr, &e2);
e1                516 scripts/kconfig/expr.c 		expr_eliminate_dups1(type, &e1, &e2->left.expr);
e1                517 scripts/kconfig/expr.c 		expr_eliminate_dups1(type, &e1, &e2->right.expr);
e1                520 scripts/kconfig/expr.c 	if (e1 == e2)
e1                523 scripts/kconfig/expr.c 	switch (e1->type) {
e1                525 scripts/kconfig/expr.c 		expr_eliminate_dups1(e1->type, &e1, &e1);
e1                532 scripts/kconfig/expr.c 		tmp = expr_join_or(e1, e2);
e1                534 scripts/kconfig/expr.c 			expr_free(e1); expr_free(e2);
e1                535 scripts/kconfig/expr.c 			e1 = expr_alloc_symbol(&symbol_no);
e1                541 scripts/kconfig/expr.c 		tmp = expr_join_and(e1, e2);
e1                543 scripts/kconfig/expr.c 			expr_free(e1); expr_free(e2);
e1                544 scripts/kconfig/expr.c 			e1 = expr_alloc_symbol(&symbol_yes);
e1                562 scripts/kconfig/expr.c 	if (e1->type == type) {
e1                563 scripts/kconfig/expr.c 		expr_eliminate_dups2(type, &e1->left.expr, &e2);
e1                564 scripts/kconfig/expr.c 		expr_eliminate_dups2(type, &e1->right.expr, &e2);
e1                568 scripts/kconfig/expr.c 		expr_eliminate_dups2(type, &e1, &e2->left.expr);
e1                569 scripts/kconfig/expr.c 		expr_eliminate_dups2(type, &e1, &e2->right.expr);
e1                571 scripts/kconfig/expr.c 	if (e1 == e2)
e1                574 scripts/kconfig/expr.c 	switch (e1->type) {
e1                576 scripts/kconfig/expr.c 		expr_eliminate_dups2(e1->type, &e1, &e1);
e1                578 scripts/kconfig/expr.c 		tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1)));
e1                582 scripts/kconfig/expr.c 			expr_free(e1);
e1                583 scripts/kconfig/expr.c 			e1 = expr_alloc_symbol(&symbol_no);
e1                591 scripts/kconfig/expr.c 		expr_eliminate_dups2(e1->type, &e1, &e1);
e1                593 scripts/kconfig/expr.c 		tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1)));
e1                597 scripts/kconfig/expr.c 			expr_free(e1);
e1                598 scripts/kconfig/expr.c 			e1 = expr_alloc_symbol(&symbol_yes);
e1                852 scripts/kconfig/expr.c 	if (e1->type == type) {
e1                853 scripts/kconfig/expr.c 		expr_extract_eq(type, ep, &e1->left.expr, &e2);
e1                854 scripts/kconfig/expr.c 		expr_extract_eq(type, ep, &e1->right.expr, &e2);
e1                862 scripts/kconfig/expr.c 	if (expr_eq(e1, e2)) {
e1                863 scripts/kconfig/expr.c 		*ep = *ep ? expr_alloc_two(type, *ep, e1) : e1;
e1                866 scripts/kconfig/expr.c 			e1 = expr_alloc_symbol(&symbol_yes);
e1                869 scripts/kconfig/expr.c 			e1 = expr_alloc_symbol(&symbol_no);
e1                879 scripts/kconfig/expr.c 	struct expr *e1, *e2;
e1                889 scripts/kconfig/expr.c 		e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);
e1                892 scripts/kconfig/expr.c 			e = expr_alloc_two(E_AND, e1, e2);
e1                894 scripts/kconfig/expr.c 			e = expr_alloc_two(E_OR, e1, e2);
e1                899 scripts/kconfig/expr.c 		e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);
e1                902 scripts/kconfig/expr.c 			e = expr_alloc_two(E_OR, e1, e2);
e1                904 scripts/kconfig/expr.c 			e = expr_alloc_two(E_AND, e1, e2);
e1               1028 scripts/kconfig/expr.c struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2)
e1               1032 scripts/kconfig/expr.c 	switch (e1->type) {
e1               1035 scripts/kconfig/expr.c 		    expr_simplify_unmet_dep(e1->left.expr, e2),
e1               1036 scripts/kconfig/expr.c 		    expr_simplify_unmet_dep(e1->right.expr, e2));
e1               1039 scripts/kconfig/expr.c 		e = expr_alloc_and(expr_copy(e1), expr_copy(e2));
e1               1041 scripts/kconfig/expr.c 		ret = (!expr_eq(e, e1)) ? e1 : NULL;
e1               1046 scripts/kconfig/expr.c 		ret = e1;
e1                202 scripts/kconfig/expr.h struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2);
e1                204 scripts/kconfig/expr.h struct expr *expr_alloc_and(struct expr *e1, struct expr *e2);
e1                205 scripts/kconfig/expr.h struct expr *expr_alloc_or(struct expr *e1, struct expr *e2);
e1                208 scripts/kconfig/expr.h int expr_eq(struct expr *e1, struct expr *e2);
e1                221 scripts/kconfig/expr.h struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2);