2004-01-11 Bernhard Held <bernhard@bernhardheld.de>
* src/SDCCicode.c (operandOperation): fixed bug #874819
+ * src/SDCCast.c (decorateType): fixed
+ char foo (unsigned long ul) { return ul > 0; }
2004-01-11 Frieder Ferlemann <Frieder.Ferlemann@web.de>
case '?':
case ':':
case SIZEOF: /* evaluate wihout code generation */
-
+
if (IS_AST_SYM_VALUE (pbody->left) &&
isSymbolEqual (AST_SYMBOL (pbody->left), sym))
return FALSE;
}
}
/* if unsigned value < 0 then always false */
- /* if (unsigned value) > 0 then (unsigned value) */
+ /* if (unsigned value) > 0 then '(unsigned value) ? 1 : 0' */
if (SPEC_USIGN(LETYPE(tree)) && IS_LITERAL(RTYPE(tree)) &&
((int) floatFromVal (valFromType (RETYPE (tree)))) == 0)
{
}
if (tree->opval.op == '>')
{
- return tree->left;
+ tree->opval.op = '?';
+ tree->right = newNode (':',
+ newAst_VALUE (constVal ("1")),
+ tree->right); /* val 0 */
+ tree->right->lineno = tree->lineno;
+ tree->right->left->lineno = tree->lineno;
+ decorateType (tree->right);
}
}
/* if they are both literal then */