aboutsummaryrefslogtreecommitdiff
path: root/scripts/parse_kconfig/cnfbuild.c
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2015-07-17 11:41:50 +0200
committerKarel Kočí <cynerd@email.cz>2015-07-17 12:07:08 +0200
commit485c55bcca5ad0480cf3c73b006a98e26ccc3f52 (patch)
tree8e237c9bd33c8d58e928ef65fceb098b030848de /scripts/parse_kconfig/cnfbuild.c
parent0369c9efcd941d9f76364568d56024b841aa66b9 (diff)
downloadlinux-conf-perf-485c55bcca5ad0480cf3c73b006a98e26ccc3f52.tar.gz
linux-conf-perf-485c55bcca5ad0480cf3c73b006a98e26ccc3f52.tar.bz2
linux-conf-perf-485c55bcca5ad0480cf3c73b006a98e26ccc3f52.zip
Simplify parse_kconfig generated CNF formulas
Not isn't now generated using additional variable. All head formulas for all configuration options are now printed directly as formulas. Not build using functions.
Diffstat (limited to 'scripts/parse_kconfig/cnfbuild.c')
-rw-r--r--scripts/parse_kconfig/cnfbuild.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/scripts/parse_kconfig/cnfbuild.c b/scripts/parse_kconfig/cnfbuild.c
index 398a934..26a9265 100644
--- a/scripts/parse_kconfig/cnfbuild.c
+++ b/scripts/parse_kconfig/cnfbuild.c
@@ -14,14 +14,10 @@ void cnf_or(struct symlist *sl, struct boolexpr *bl);
void cnf_not(struct symlist *sl, struct boolexpr *bl);
void cnf_boolexpr(struct symlist *sl, struct boolexpr *bl) {
- if (bl->type == BT_TRUE) {
- // Term is always true. No write required.
+ if (bl->type == BT_TRUE || bl->type == BT_FALSE)
+ return;
+ if (bl->id != 0)
return;
- } else if (bl->type == BT_FALSE) {
- fprintf(stderr,
- "E: Trying to write false term. This shouldn't happen.\n");
- exit(6);
- }
struct stck *stack = stack_create();
while (bl != NULL) {
@@ -131,13 +127,18 @@ void cnf_or(struct symlist *sl, struct boolexpr *bl) {
void cnf_not(struct symlist *sl, struct boolexpr *bl) {
if (bl->id != 0)
return;
- bl->id = symlist_adddummy(sl);
- // bl->id <-> !bl->left->id
- // (bl->id || bl->left->id) && (!bl->id || !bl->left->id)
- output_rules_symbol((int) bl->id);
- output_rules_symbol((int) bl->left->id);
- output_rules_endterm();
- output_rules_symbol(-(int) bl->id);
- output_rules_symbol(-(int) bl->left->id);
- output_rules_endterm();
+ bl->id = -1 * bl->left->id;
+ /*
+ bl->id = symlist_adddummy(sl);
+ // bl->id <-> !bl->left->id
+ // (bl->id || bl->left->id) && (!bl->id || !bl->left->id)
+ output_rules_symbol((int) bl->id);
+ output_rules_symbol((int) bl->left->id);
+ output_rules_endterm();
+ output_rules_symbol(-(int) bl->id);
+ output_rules_symbol(-(int) bl->left->id);
+ output_rules_endterm();
+ output_rules_symbol((int) bl->id);
+ output_rules_symbol((int) bl->left->id);
+ */
}