From 131604c8d20246b130583ef665a3e0a193a1d1c0 Mon Sep 17 00:00:00 2001 From: maartenbrock Date: Sun, 12 Sep 2004 17:04:57 +0000 Subject: [PATCH] * src/mcs51/ralloc.c (packRegisters): applied fix by Bernhard Held 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 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mcs51/ralloc.c b/src/mcs51/ralloc.c index 3f91d64b..0c9ada1d 100644 --- a/src/mcs51/ralloc.c +++ b/src/mcs51/ralloc.c @@ -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); } -- 2.47.2