From: SourceForge.net <no...@so...> - 2011-09-15 22:06:38
|
Bugs item #3147475, was opened at 2010-12-29 08:45 Message generated for change (Settings changed) made by maartenbrock You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=3147475&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: pic16 target Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Christopher Head (hawk777) Assigned to: Nobody/Anonymous (nobody) >Summary: PIC16: ptr dereference silently dropped, bad code generated Initial Comment: Compiling the attached source file with the following command: $ sdcc -mpic16 -p18f65j50 --use-non-free -c xbee_txpacket.c silently generates bad code. Specifically, the following snippet appears in the assembly output: ; .line 14; xbee_txpacket.c if (!ready_queue.head->field) { MOVFF _ready_queue, r0x00 MOVF r0x00, W BNZ _00106_DS_ ; .line 15; xbee_txpacket.c LATBbits.LATB0 = 1; It's quite obvious that the three listed assembly instructions do not do what the source line above them says. The source line should go to the (known-at-compile-time) address of the "head" field of the "ready_queue" structure, *dereference the pointer found there*, and then check whether the byte in "field" at the thus-found structure is zero or not. The assembly instructions, on the other hand, merely check whether the first byte of the "head" pointer itself is zero! $ sdcc --version SDCC : pic16/pic14 3.0.0 #6037 (Nov 8 2010) (Linux) ---------------------------------------------------------------------- Comment By: Christopher Head (hawk777) Date: 2010-12-29 08:55 Message: Interestingly, further investigation suggests this only affects the *FIRST* element of the pointed-to structure; accesses to subsequent elements work fine. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=3147475&group_id=599 |