]> git.gag.com Git - fw/sdcc/commitdiff
* src/mcs51/ralloc.c (packRegisters): applied fix by Bernhard Held
authormaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 12 Sep 2004 17:04:57 +0000 (17:04 +0000)
committermaartenbrock <maartenbrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 12 Sep 2004 17:04:57 +0000 (17:04 +0000)
  for bugs 898889 & 979599. Fixed sigsegv in previous fix.

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3493 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/mcs51/ralloc.c

index 3f91d64b5a9798254f2320e6ca91e17fd2b26be4..0c9ada1d238547496f3c59022caf22fe7614e6e1 100644 (file)
@@ -2825,8 +2825,9 @@ packRegisters (eBBlock ** ebpp, int blockno)
           IC_LEFT (ic) == IC_RESULT (ic->prev) &&
           isOperandEqual (IC_RESULT(ic), IC_RIGHT(ic->prev)))
         {
-          bitVectUnSetBit (OP_SYMBOL (IC_RESULT (ic->prev))->defs,
-                                      ic->prev->key);
+          int key = ic->prev->key;
+
+          bitVectUnSetBit (OP_SYMBOL (IC_RESULT (ic->prev))->defs, key);
           ReplaceOpWithCheaperOp (&IC_LEFT (ic), IC_RESULT (ic));
           if (/*IS_ITEMP (IC_RESULT (ic->prev)) && */
               OP_SYMBOL (IC_RESULT (ic->prev))->liveFrom > ic->seq)
@@ -2844,7 +2845,7 @@ packRegisters (eBBlock ** ebpp, int blockno)
 
           remiCodeFromeBBlock (ebp, ic->prev);
           // bitVectUnSetBit (OP_SYMBOL (IC_RESULT (ic))->defs, ic->key);
-          hTabDeleteItem (&iCodehTab, ic->prev->key, ic->prev, DELETE_ITEM, NULL);
+          hTabDeleteItem (&iCodehTab, key, ic->prev, DELETE_ITEM, NULL);
           // OP_DEFS (IC_RESULT (ic->prev)) = bitVectSetBit (OP_DEFS (IC_RESULT (ic->prev)), ic->prev->key);
         }