From: <no...@so...> - 2001-11-17 23:30:09
|
Bugs item #482929, was opened at 2001-11-17 15:29 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=100599&aid=482929&group_id=599 Category: msc51(8051) target Group: None Status: Open Resolution: None Priority: 5 Submitted By: Paul Stoffregen (pjs) Assigned to: Nobody/Anonymous (nobody) Summary: Code not generated for unknown reason Initial Comment: I ran into a problem where the first line of code in a function results in no generated code. The bug is not reproducable without a good amount of other code in the file which appears to be totally unrelated. I tried to pare the code down to the minimum to reproduce the bug. You can download it here (125 lines): http://www.pjrc.com/tmp/display.c In the "void lcd_bass_set(char bass)" function, the first line "x=(bass+12)*17/25" produces no generated asm output, and then later a warning is output that "'x' may be used before initialization". In the .rel file is linked, the linker will complain that "_lcd_bass_set_x_1_1" is undefined. If either of the two unrelated functions is deleted, or other lines in this function are changed, the problem goes away. Also, the bug only occurs when using large memory model. I'll attach the 125 lines to this message. Paul extern void printf (code char * , ...) reentrant; extern void print(code char *str); #ifndef SDCC_MODEL_LARGE #error "SDCC's large memory model is required" #endif #pragma CALLEE-SAVES print extern volatile xdata unsigned char playing; extern char mode; #define M_DIRONLY 1 #define M_DIRRAND 2 #define M_SEQNTIAL 3 #define M_PLSTRAND 4 #define M_ALLRAND 5 extern void lcd_navigation(unsigned char x, unsigned char y, char *navtext, unsigned char this_control); #define SCREEN1 0x01 #define CONTROL0 0x00 #define CONTROL1 0x01 #define CONTROL2 0x02 #define CONTROL5 0x05 #define CONTROL7 0x07 void lcd_update_top_line(void) { if (playing) { lcd_navigation(0,0,"Playing ",CONTROL1); } else { lcd_navigation(0,0,"Paused ",CONTROL1); } switch (mode) { case M_DIRONLY: lcd_navigation(8,0," Dir Only ",CONTROL2); break; case M_DIRRAND: lcd_navigation(8,0," Dir Rand ",CONTROL2); break; case M_SEQNTIAL: lcd_navigation(8,0," Seqntial ",CONTROL2); break; case M_PLSTRAND: lcd_navigation(8,0," Plst Rand",CONTROL2); break; case M_ALLRAND: lcd_navigation(8,0," All Rand ",CONTROL2); break; } // print("\[\B2 ---:--\]\r\n"); } void lcd_volume_set_db(unsigned char attn,unsigned char x, unsigned char y) // // lcd_volume_set_db // // Displays a volume db at the specified coordinates. // { lcd_navigation(x,y,"Vol: ",CONTROL5); if(attn==0) { print("\[\B%' 0 dB\]\r\n"); } else { printf("\[\B%%'-%2d dB\]\r\n",attn); } } void lcd_bass_set(char bass) // // lcd_bass_set // // Displays a bass bargraph on the bottom line of // the display. // // The sta013 expects a 2s compliment number from // -12 to 12 corresponding to a bass boost of // -18dB to 18dB. // { unsigned char x,z; /* BUG: no code seems to be generated for this line?? */ x=(bass+12)*17/25; lcd_navigation(0,5,"Bas: ",CONTROL7); print("\[\B%%["); for(z=0;z<17;z++) { if(z==x) { // Character 151 in font 1 print("\C!\w\C "); } else { print("-"); } } print("]\]\r\n"); } ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=100599&aid=482929&group_id=599 |
From: Sandeep D. <sa...@wi...> - 2001-11-18 01:44:47
|
Fixed..SDCCicode.c .. Nasty one .. Sandeep > -----Original Message----- > From: sdc...@li... > [mailto:sdc...@li...]On Behalf Of > no...@so... > Sent: Saturday, November 17, 2001 3:30 PM > To: no...@so... > Subject: [sdcc-devel] [ sdcc-Bugs-482929 ] Code not generated for > unknown reason > > > Bugs item #482929, was opened at 2001-11-17 15:29 > You can respond by visiting: > http://sourceforge.net/tracker/?func=detail&atid=100599&aid=48 > 2929&group_id=599 > > Category: msc51(8051) target > Group: None > Status: Open > Resolution: None > Priority: 5 > Submitted By: Paul Stoffregen (pjs) > Assigned to: Nobody/Anonymous (nobody) > Summary: Code not generated for unknown reason > > Initial Comment: > I ran into a problem where the first line of code > in a function results in no generated code. The > bug is not reproducable without a good amount of > other code in the file which appears to be totally > unrelated. I tried to pare the code down to the > minimum to reproduce the bug. You can download it > here (125 lines): > > http://www.pjrc.com/tmp/display.c > > In the "void lcd_bass_set(char bass)" function, > the first line "x=(bass+12)*17/25" produces no > generated asm output, and then later a warning > is output that "'x' may be used before > initialization". In the .rel file is linked, > the linker will complain that "_lcd_bass_set_x_1_1" > is undefined. > > If either of the two unrelated functions is > deleted, or other lines in this function are > changed, the problem goes away. Also, the > bug only occurs when using large memory model. > > I'll attach the 125 lines to this message. > > > Paul > > > > extern void printf (code char * , ...) reentrant; > extern void print(code char *str); > > #ifndef SDCC_MODEL_LARGE > #error "SDCC's large memory model is required" > #endif > > #pragma CALLEE-SAVES print > > extern volatile xdata unsigned char playing; > > extern char mode; > > #define M_DIRONLY 1 > #define M_DIRRAND 2 > #define M_SEQNTIAL 3 > #define M_PLSTRAND 4 > #define M_ALLRAND 5 > > extern void lcd_navigation(unsigned char x, unsigned > char y, char *navtext, > unsigned char this_control); > > #define SCREEN1 0x01 > > #define CONTROL0 0x00 > #define CONTROL1 0x01 > #define CONTROL2 0x02 > #define CONTROL5 0x05 > #define CONTROL7 0x07 > > > > void lcd_update_top_line(void) { > if (playing) { > lcd_navigation(0,0,"Playing ",CONTROL1); > } else { > lcd_navigation(0,0,"Paused ",CONTROL1); > } > > switch (mode) { > case M_DIRONLY: > lcd_navigation(8,0," Dir Only ",CONTROL2); > break; > case M_DIRRAND: > lcd_navigation(8,0," Dir Rand ",CONTROL2); > break; > case M_SEQNTIAL: > lcd_navigation(8,0," Seqntial ",CONTROL2); > break; > case M_PLSTRAND: > lcd_navigation(8,0," Plst Rand",CONTROL2); > break; > case M_ALLRAND: > lcd_navigation(8,0," All Rand ",CONTROL2); > break; > } > // print("\[\B2 ---:--\]\r\n"); > } > > > void lcd_volume_set_db(unsigned char attn,unsigned char > x, unsigned char y) > // > // lcd_volume_set_db > // > // Displays a volume db at the specified coordinates. > // > { > lcd_navigation(x,y,"Vol: ",CONTROL5); > > if(attn==0) > { > print("\[\B%' 0 dB\]\r\n"); > } > else > { > printf("\[\B%%'-%2d dB\]\r\n",attn); > } > } > > > void lcd_bass_set(char bass) > // > // lcd_bass_set > // > // Displays a bass bargraph on the bottom line of > // the display. > // > // The sta013 expects a 2s compliment number from > // -12 to 12 corresponding to a bass boost of > // -18dB to 18dB. > // > { > unsigned char x,z; > > /* BUG: no code seems to be generated for this > line?? */ > x=(bass+12)*17/25; > > > > lcd_navigation(0,5,"Bas: ",CONTROL7); > > print("\[\B%%["); > > for(z=0;z<17;z++) > { > if(z==x) > { > // Character 151 in font 1 > print("\C!\w\C "); > } > else > { > print("-"); > } > } > print("]\]\r\n"); > } > > > > > > > ---------------------------------------------------------------------- > > You can respond by visiting: > http://sourceforge.net/tracker/?func=detail&atid=100599&aid=48 2929&group_id=599 _______________________________________________ sdcc-devel mailing list sdc...@li... https://lists.sourceforge.net/lists/listinfo/sdcc-devel |