From: Johan K. <joh...@id...> - 2001-06-04 14:02:07
|
I made SDCCval.c:constVal() create a char for values < 256 instead of a short int. This is not (and should not be, but that's another story) the same. E.g. after my latest fix of the cge optimizer, it decides that a bit var does not have the same SPEC_SHORT as a constant and allows the terrible cast: static bit long_flag=0; mov r2,#0x00 mov a,r2 clr c jz 00104$ cpl c 00104$: mov _long_flag,c instead of just: clr _long_flag Even worse, the loop optimizer (since it now only sees invariant iTemp's for e.g. radix in printfl.c) decides to take the assignments out of the loop. The next step will be to remove _short from the specifier structure and #define V_SHORT to either V_CHAR (as it is) or to V_INT (as it should be). Comments are welcome. Johan |