Fixed a loop invariant bug & a casting bug
[fw/sdcc] / src / mcs51 / ralloc.c
index 2a3726c340fe7a6fd705f54add137b535b9f6c08..cf088764cb47bace9002844f69fe6ec854d8b9c9 100644 (file)
@@ -2190,7 +2190,8 @@ static void packRegisters (eBBlock *ebp)
            link *toType = operandType(IC_LEFT(ic));
 
            if (IS_INTEGRAL(fromType) && IS_INTEGRAL(toType) &&
-               getSize(fromType) != getSize(toType) ) {
+               getSize(fromType) != getSize(toType)  &&
+               SPEC_USIGN(fromType) == SPEC_USIGN(toType)) {
 
                iCode *dic = packRegsForOneuse(ic,IC_RIGHT(ic),ebp);
                if (dic) {