if (! applyToSetFTrue (basicInd,findInduction,aSym,&ip))
continue ;
+ /* ask port for size not worth if native instruction
+ exist for multiply & divide */
+ if (getSize(operandType(IC_LEFT(ic))) <= port->muldiv.native_below ||
+ getSize(operandType(IC_RIGHT(ic))) <= port->muldiv.native_below)
+ continue;
+
/* if this is a division then the remainder should be zero
for it to be inducted */
if (ic->op == '/' && (ip->cval % litVal))
mov (%1 + %2 + %3),((%2 + %1) + %3)
} by {
; Peephole 221b remove redundant move
+}
+
+replace {
+ dec r%1
+ inc r%1
+} by {
+ ; removed dec/inc pair
}
\ No newline at end of file
the usage of b, & acc */
if (getSize(operandType(op)) > (fReturnSize - 2) &&
ic->op != RETURN &&
- ic->op != SEND)
+ ic->op != SEND &&
+ !POINTER_SET(ic) &&
+ !POINTER_GET(ic))
return NULL;
/* this routine will mark the a symbol as used in one
return NULL;
/* if left or right or result is in far space */
- if (isOperandInFarSpace(IC_LEFT(dic)) ||
+ if (isOperandInFarSpace(IC_LEFT(dic)) ||
isOperandInFarSpace(IC_RIGHT(dic)) ||
isOperandInFarSpace(IC_RESULT(dic)) ||
IS_OP_RUONLY(IC_LEFT(dic)) ||