int size = AOP_SIZE(oper) - 1;
int offset = 1;
+ /* The generic part of a generic pointer should
+ * not participate in it's truth value.
+ *
+ * i.e. 0x10000000 is zero.
+ */
+ if (opIsGptr(oper))
+ {
+ D(emitcode(";", "toBoolean: generic ptr special case."););
+ size--;
+ }
+
if (AOP_NEEDSACC(oper))
{
emitcode("push", "b");
right = left;
left = t;
}
+
if(AOP_TYPE(right) == AOP_LIT)
lit = (unsigned long)floatFromVal(AOP(right)->aopu.aop_lit);
+
+ if (opIsGptr(left) || opIsGptr(right))
+ {
+ /* We are comparing a generic pointer to something.
+ * Exclude the generic type byte from the comparison.
+ */
+ size--;
+ D(emitcode(";", "cjneshort: generic ptr special case.");)
+ }
+
/* if the right side is a literal then anything goes */
if (AOP_TYPE(right) == AOP_LIT &&
// saves 2 bytes, ?? cycles.
replace {
mov dpl,#%1
- mov dph,#(%1 >> 8)
- mov dpx,#(%1 >> 16)
+ mov dph,#%2
+ mov dpx,#%3
} by {
; Peephole 182a used 24 bit load of dptr
- mov dptr,#%1
+ mov dptr,#((%3 << 16) + (%2 << 8) + %1)
} if 24bitMode
// saving 3 byte, 2 cycles, return(float_constant) profits here