From c00cbb86e17a7d99ed213dfd73e80cc6a1bfe384 Mon Sep 17 00:00:00 2001 From: johanknol Date: Thu, 8 May 2003 12:55:22 +0000 Subject: [PATCH] fixed bug #734169 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2600 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/SDCCcse.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/SDCCcse.c b/src/SDCCcse.c index 8942590e..cfa79af1 100644 --- a/src/SDCCcse.c +++ b/src/SDCCcse.c @@ -83,9 +83,9 @@ pcseDef (void *item, va_list ap) void ReplaceOpWithCheaperOp(operand **op, operand *cop) { #ifdef RANGEHUNT - printf ("ReplaceOpWithCheaperOp (%s:%d with %s:%d): ", - OP_SYMBOL((*op))->name, OP_SYMBOL((*op))->isreqv, - OP_SYMBOL(cop)->name, OP_SYMBOL(cop)->isreqv); + printf ("ReplaceOpWithCheaperOp %s with %s: ", + IS_SYMOP((*op)) ? OP_SYMBOL((*op))->name : "!SYM", + IS_SYMOP(cop) ? OP_SYMBOL(cop)->name : "!SYM"); // if op is a register equivalent if (IS_ITEMP(cop) && OP_SYMBOL((*op))->isreqv) { operand **rop = &OP_SYMBOL((*op))->usl.spillLoc->reqv; @@ -1559,12 +1559,13 @@ cseBBlock (eBBlock * ebb, int computeOnly, /* update the spill location for this */ updateSpillLocation (ic,0); - if (POINTER_SET (ic) && + if (POINTER_SET (ic) && !(IS_BITFIELD (OP_SYMBOL (IC_RESULT (ic))->etype))) { pdop = NULL; applyToSetFTrue (cseSet, findCheaperOp, IC_RESULT (ic), &pdop, 0); - if (pdop && IS_ITEMP (pdop) && !computeOnly) + if (pdop && !computeOnly && + IS_ITEMP (pdop) && IS_PTR(operandType(pdop))) ReplaceOpWithCheaperOp (&IC_RESULT(ic), pdop); } } -- 2.30.2