* src/SDCCcse.c (algebraicOpts): copy operands before modification
authorbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 9 Feb 2004 12:25:29 +0000 (12:25 +0000)
committerbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 9 Feb 2004 12:25:29 +0000 (12:25 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3185 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/SDCCcse.c

index c16339d7bdb116e20ce13b8ecf3c22fe65543d0a..cb17b13845bd24e3759c332e5cf7b6bfe9143e46 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2004-02-09 Bernhard Held <bernhard AT bernhardheld.de>
+
+       * src/SDCCcse.c (algebraicOpts): copy operands before modification
+
 2004-02-09 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
 
        * src/SDCCsymt.h,
index 24bd57b5d2cc8ad88a582b06a7d54c48031baef3..1466760c72dc7b058d4fc612e4cbeb1008649b9e 100644 (file)
@@ -914,6 +914,7 @@ algebraicOpts (iCode * ic, eBBlock * ebp)
              else
                {
                  ic->op = CAST;
+                 IC_LEFT (ic) = operandFromOperand (IC_LEFT (ic));
                  IC_LEFT (ic)->type = TYPE;
                  IC_LEFT (ic)->isLiteral = 0;
                  setOperandType (IC_LEFT (ic), operandType (IC_RESULT (ic)));
@@ -952,7 +953,7 @@ algebraicOpts (iCode * ic, eBBlock * ebp)
                  ic->op = CAST;
                  op = IC_RIGHT (ic);
                  IC_RIGHT (ic) = IC_LEFT (ic);
-                 IC_LEFT (ic) = op;
+                 IC_LEFT (ic) = operandFromOperand (op);
                  IC_LEFT (ic)->type = TYPE;
                  IC_LEFT (ic)->isLiteral = 0;
                  setOperandType (IC_LEFT (ic), operandType (IC_RESULT (ic)));