Fixed a loop invariant bug & a casting bug
[fw/sdcc] / src / ds390 / ralloc.c
index 7555de4ed2310434c57650fd49afae8f7418a161..9d12c973d1c0609d175dc38cb595f9352daa03de 100644 (file)
@@ -2191,7 +2191,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) {