DEADSOFTWARE

DevCPR: mark when condition compilation used
[cpc.git] / src / generic / Dev / Mod / CPR.cp
index 7791454cd607538d29b831f4d9ef1532a24fe4c3..8802469cd23daaa568b389b42399ff165fa6cbca 100644 (file)
@@ -36,6 +36,7 @@ MODULE DevCPR;
     scope: Selector;
     top: Context;
     skip-: BOOLEAN;
+    used-: BOOLEAN;
 
   PROCEDURE err (n: SHORTINT);
   BEGIN DevCPM.err(n)
@@ -162,7 +163,7 @@ MODULE DevCPR;
   BEGIN
     Factor(x, use);
     WHILE sym = and DO
-      Get(sym); Factor(y, use); IF use THEN x := x & y END
+      Get(sym); Factor(y, use & x); IF use & x THEN x := x & y END
     END
   END Term;
 
@@ -171,7 +172,7 @@ MODULE DevCPR;
   BEGIN
     Term(x, use);
     WHILE sym = or DO
-      Get(sym); Term(y, use); IF use THEN x := x OR y END
+      Get(sym); Term(y, use & ~x); IF use & ~x THEN x := x OR y END
     END
   END Expression;
 
@@ -187,7 +188,7 @@ MODULE DevCPR;
     VAR c: Context;
   BEGIN
     NEW(c); c.next := top; c.alt := FALSE; c.val := cond; c.ref := 0; top := c;
-    INC(fold); skip := ~Printable()
+    INC(fold); skip := ~Printable(); used := TRUE
   END If;
 
   PROCEDURE Else;
@@ -259,7 +260,7 @@ MODULE DevCPR;
   BEGIN
     ch := " "; sym := eof; name := "";
     fold := 0; top := NIL; scope := NIL;
-    skip := FALSE
+    skip := FALSE; used := FALSE
   END Close;
 
   PROCEDURE Init*;
@@ -269,7 +270,8 @@ MODULE DevCPR;
     If(TRUE);
     NEW(scope);
     Set("TRUE", TRUE);
-    Set("FALSE", FALSE)
+    Set("FALSE", FALSE);
+    used := FALSE
   END Init;
 
 END DevCPR.