From: SourceForge.net <no...@so...> - 2011-10-06 19:36:44
|
Bugs item #3419769, was opened at 2011-10-06 19:31 Message generated for change (Comment added) made by You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=3419769&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: z80 port Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: mic_ () Assigned to: Nobody/Anonymous (nobody) Summary: Z80: Function pointers results in unreachable code Initial Comment: I'm compiling the Petit FatFs source (attached) with the following command: sdcc -mz80 --data-loc 0xC001 --no-std-crt0 --oldralloc --no-peep --code-loc 0x8000 pff.c My SDCC version is: mcs51/gbz80/z80/z180/ds390/pic16/pic14/TININative/ds400/hc08 3.0.5 #6899 (Oct 2 2011) (MINGW32) When building the Petit FatFs code for the Z80 I decided to put some of the low-level disk I/O routines it uses in a separate bank. So I replaced e.g. this prototype: DSTATUS disk_initialize(void); with a define like this: #define disk_initialize ((DSTATUS (*)(void))0xD689) (I generate these defines automatically from the map files with a tool) After doing these changes the compiler incorrectly marks large portions of code as unreachable. For example, it considers the following return to always be taken: if (disk_initialize() != 0) return FR_NOT_READY; even though that depends on the value returned by disk_initialize. Attached the code in question. ---------------------------------------------------------------------- >Comment By: mic_ () Date: 2011-10-06 19:36 Message: I should add that I've successfully used the same principle of defined function pointers elsewhere (with the same version of SDCC). I only ran into these problems when using them in PFF. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=3419769&group_id=599 |