]> git.sur5r.net Git - cc65/blobdiff - src/cc65/testexpr.c
Cleanup. Added a few general purpose functions.
[cc65] / src / cc65 / testexpr.c
index a8d559f4f3a3e074df2715eb41b1f0e9382a36e7..5b2ae3d02dbddaec1e0b282c2e0d2396ea0bca1e 100644 (file)
 /*****************************************************************************/
 
 
-
+                     
+/* cc65 */
 #include "codegen.h"
 #include "error.h"
 #include "expr.h"
+#include "loadexpr.h"
 #include "scanner.h"
 #include "testexpr.h"
 
@@ -53,26 +55,23 @@ unsigned Test (unsigned Label, int Invert)
  * defined above. If the jump is always true, a warning is output.
  */
 {
-    ExprDesc lval;
+    ExprDesc Expr;
     unsigned Result;
 
-    /* Evaluate the expression */
-    expr (hie0, InitExprDesc (&lval));
-
-    /* Check for a boolean expression */
-    CheckBoolExpr (&lval);
+    /* Read a boolean expression */
+    BoolExpr (hie0, &Expr);
 
     /* Check for a constant expression */
-    if (ED_IsRVal (&lval) && lval.Flags == E_MCONST) {
+    if (ED_IsConstAbs (&Expr)) {
 
         /* Result is constant, so we know the outcome */
-        Result = (lval.ConstVal != 0);
+        Result = (Expr.IVal != 0);
 
        /* Constant rvalue */
-               if (!Invert && lval.ConstVal == 0) {
+               if (!Invert && Expr.IVal == 0) {
            g_jump (Label);
            Warning ("Unreachable code");
-       } else if (Invert && lval.ConstVal != 0) {
+       } else if (Invert && Expr.IVal != 0) {
            g_jump (Label);
        }
 
@@ -82,12 +81,12 @@ unsigned Test (unsigned Label, int Invert)
         Result = TESTEXPR_UNKNOWN;
 
         /* If the expr hasn't set condition codes, set the force-test flag */
-        if ((lval.Test & E_CC) == 0) {
-            lval.Test |= E_FORCETEST;
+        if (!ED_IsTested (&Expr)) {
+            ED_MarkForTest (&Expr);
         }
 
         /* Load the value into the primary register */
-        ExprLoad (CF_FORCECHAR, &lval);
+        LoadExpr (CF_FORCECHAR, &Expr);
 
         /* Generate the jump */
         if (Invert) {