From: SourceForge.net <no...@so...> - 2010-08-23 10:02:01
|
Bugs item #3049050, was opened at 2010-08-20 03:06 Message generated for change (Comment added) made by maartenbrock You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=3049050&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: None >Group: non bugs >Status: Closed >Resolution: Rejected Priority: 5 Private: No Submitted By: WSW (wswong234) >Assigned to: Maarten Brock (maartenbrock) Summary: messy code Initial Comment: The assembly code generated from the C source can be completely wrong. But by the insertion of a dummy subroutine call, the correct code is generated. The subroutine call is just a empty one which do nothing. I attached the c source, a part of the buggy listing file and the correct listing file In the C code. The line "fault(); // dummy code which avoid the bug" is the dummy subroutine call. In the incorrect assembly code listing and at line 2679, there is a sjump to label 00137$. This is wrong. It should jump to lable 00111$. The code between label 00137$ and 00111$ should be a part of code at line 2726. Somehow SDCC just mess them up! One may compare them with the correct assembly code listing at line 2897 and line 2925. ---------------------------------------------------------------------- >Comment By: Maarten Brock (maartenbrock) Date: 2010-08-23 12:02 Message: You did not mention which MCU, you did not mention which version of SDCC. The code is incomplete and does not compile like this. There is no line 2897 or 2925. I guess some global variables are changed in an ISR and you forgot to make them volatile. I guess you got warnings that you ignored too. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=3049050&group_id=599 |