From: SourceForge.net <no...@so...> - 2007-06-19 08:54:39
|
Bugs item #1739475, was opened at 2007-06-19 06:29 Message generated for change (Comment added) made by patryks You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739475&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: Icode generator Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Stas Sergeev (stsp) Assigned to: Nobody/Anonymous (nobody) Summary: pointer double-dereference doesn't work Initial Comment: Hi. The following (also attached) code miscompiles: --- idata volatile unsigned char t = 3; idata volatile unsigned char a = (unsigned char)&t; idata volatile unsigned char b = 0; idata volatile unsigned char c = (unsigned char)&b; unsigned char main() { idata unsigned char * idata unsigned char *p = (idata unsigned char * idata unsigned char *)(c - 1); #define BUG 1 #if BUG return **p; #else idata volatile unsigned char *tmp = *p; return *tmp; #endif } --- The asm looks like this: --- ; ddptr.c:8: idata unsigned char * idata unsigned char *p = mov r0,#_c mov ar2,@r0 mov r3,#0x00 dec r2 cjne r2,#0xff,00103$ dec r3 00103$: ; ddptr.c:12: return **p; ----------------- BUG! ------------------ mov ar0,@r0 mov ar2,@r0 mov dpl,r2 ret --- Where I put "BUG!", obviously "mov r0, r2" is missing. The test-case should return 3, but returns 0. Define BUG to 0 to get the correct result. ---------------------------------------------------------------------- Comment By: Patryk (patryks) Date: 2007-06-19 10:54 Message: Logged In: YES user_id=1788180 Originator: NO Reproduced with SDCC #4847. Shouldn't your 'p' definition look like below? idata unsigned char * idata * p = (idata unsigned char * idata *)(c - 1); Anyway it doesn't change the result, but is at least free of syntax errors missed by SDCC. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739475&group_id=599 |