Hi, I'm using sdcc to build z80 programs for cpm.
I think I found a strange bug. The program test2.c should output 5 / 2.5 = 2 but the output is instead 5 / 2.5 = 0 here the main of test2.c (complete test case is in dropbox) int main() { unsigned n = 5; unsigned i = (unsigned) ( n / 2.5 ); printf( "%d / 2.5 = %d\n", n, i ); return EXIT_SUCCESS; } i is 5 / 2.5; that is 2, but sdcc compute the value 0 at compile time (see test2.asm) To test the produced program test2.com (or test1.com, the version with int instead of unsigned) zxcc can be used. For. ex zxcc test1.com (zxcc is available here -> http://www.seasip.info/Unix/Zxcc/) test1.c use int and produce the correct result. test2.c use unsigned and produce the uncorrect one. sdcc -v SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 3.3.2 #8948 (Feb 18 2014) (Linux) In test1.c (the correct one) I get the warning test1.c:28: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG I have put the test cases with build script named build.sh in dropbox -> https://dl.dropboxusercontent.com/u/54869628/sdcc-test.tgz MfG Luca. ------------------------------------------------------------------------------ Managing the Performance of Cloud-Based Applications Take advantage of what the Cloud has to offer - Avoid Common Pitfalls. Read the Whitepaper. http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk _______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user