]> git.sur5r.net Git - cc65/commitdiff
The code for compares with a constant result may not be removed, because it
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 1 May 2011 18:48:06 +0000 (18:48 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 1 May 2011 18:48:06 +0000 (18:48 +0000)
may contain side effects.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5010 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/expr.c

index 4e65e294cdc1dd69a06345ab29e79d65fd783944..8b5ebd06f21aa8cd503bce54f65389c0c48c3daf 100644 (file)
@@ -2076,7 +2076,9 @@ static void hie_compare (const GenDesc* Ops,    /* List of generators */
                 }
 
                 /* Comparing a char against a constant may have a constant
-                 * result.
+                 * result. Please note: It is not possible to remove the code
+                * for the compare alltogether, because it may have side 
+                * effects.
                  */
                 switch (Tok) {
 
@@ -2084,7 +2086,6 @@ static void hie_compare (const GenDesc* Ops,    /* List of generators */
                         if (Expr2.IVal < LeftMin || Expr2.IVal > LeftMax) {
                             ED_MakeConstAbsInt (Expr, 0);
                             WarnConstCompareResult ();
-                            RemoveCode (&Mark0);
                             goto Done;
                         }
                         break;
@@ -2093,7 +2094,6 @@ static void hie_compare (const GenDesc* Ops,    /* List of generators */
                         if (Expr2.IVal < LeftMin || Expr2.IVal > LeftMax) {
                             ED_MakeConstAbsInt (Expr, 1);
                             WarnConstCompareResult ();
-                            RemoveCode (&Mark0);
                             goto Done;
                         }
                         break;
@@ -2102,7 +2102,6 @@ static void hie_compare (const GenDesc* Ops,    /* List of generators */
                         if (Expr2.IVal <= LeftMin || Expr2.IVal > LeftMax) {
                             ED_MakeConstAbsInt (Expr, Expr2.IVal > LeftMax);
                             WarnConstCompareResult ();
-                            RemoveCode (&Mark0);
                             goto Done;
                         }
                         break;
@@ -2111,7 +2110,6 @@ static void hie_compare (const GenDesc* Ops,    /* List of generators */
                         if (Expr2.IVal < LeftMin || Expr2.IVal >= LeftMax) {
                             ED_MakeConstAbsInt (Expr, Expr2.IVal >= LeftMax);
                             WarnConstCompareResult ();
-                            RemoveCode (&Mark0);
                             goto Done;
                         }
                         break;
@@ -2120,7 +2118,6 @@ static void hie_compare (const GenDesc* Ops,    /* List of generators */
                         if (Expr2.IVal <= LeftMin || Expr2.IVal > LeftMax) {
                             ED_MakeConstAbsInt (Expr, Expr2.IVal <= LeftMin);
                             WarnConstCompareResult ();
-                            RemoveCode (&Mark0);
                             goto Done;
                         }
                         break;
@@ -2129,7 +2126,6 @@ static void hie_compare (const GenDesc* Ops,    /* List of generators */
                         if (Expr2.IVal < LeftMin || Expr2.IVal >= LeftMax) {
                             ED_MakeConstAbsInt (Expr, Expr2.IVal < LeftMin);
                             WarnConstCompareResult ();
-                            RemoveCode (&Mark0);
                             goto Done;
                         }
                         break;