pearce@TYCHO.YERKES.UCHICAGO.EDU ("Eric C. Pearce") (02/17/89)
A GCC 1.31 bug report: The following program was compiled and run on a Sun 3/260 running OS 3.5. When compiled with -DWITH_CONST a static const int to size an array on the stack (otherwise it uses a macro for the array size). When compiled with WITH_CONST defined, it does not work. Version number and OS details are included in the session transcript. I would appreciate acknowledgement of receipt of this bug report (so I know I didn't waste my time making it). Thanks. ============== bug.c: #define ARRAY_SIZE 8 static const int Array_size = ARRAY_SIZE; int function(char* buf) { int cnt; for (cnt = 0; cnt < ARRAY_SIZE; cnt++) printf("function: buf[%d] = %d\n",cnt,buf[cnt]); return 0; } int main() { #ifdef WITH_CONST char buf[Array_size]; /* Define array with static const */ #else char buf[ARRAY_SIZE]; /* or with real constant */ #endif int cnt; for(cnt = 0; cnt < ARRAY_SIZE; cnt++) buf[cnt] = cnt; for (cnt = 0; cnt < ARRAY_SIZE; cnt++) printf("main: buf[%d] = %d\n",cnt,buf[cnt]); return function(buf); /* must be in return to be buggy */ } =============== Transcript of session: tycho% gcc -v gcc version 1.31 tycho% head -1 /etc/motd Sun UNIX 4.2 Release 3.5 (TYCHOAT) #1: Fri Dec 2 14:13:15 CST 1988 tycho% ls -l /usr/src/Gnu/gcc-1.31/tm.h /usr/src/Gnu/gcc-1.31/md lrwxrwxrwx 1 root 7 Feb 16 11:39 /usr/src/Gnu/gcc-1.31/md -> m68k.md lrwxrwxrwx 1 root 9 Feb 16 11:39 /usr/src/Gnu/gcc-1.31/tm.h -> tm-sun3.h tycho% gcc bug.c -o bug ;; This way works! tycho% bug main: buf[0] = 0 main: buf[1] = 1 main: buf[2] = 2 main: buf[3] = 3 main: buf[4] = 4 main: buf[5] = 5 main: buf[6] = 6 main: buf[7] = 7 function: buf[0] = 0 function: buf[1] = 1 function: buf[2] = 2 function: buf[3] = 3 function: buf[4] = 4 function: buf[5] = 5 function: buf[6] = 6 function: buf[7] = 7 tycho% gcc -DWITH_CONST bug.c -o bug ;; This way does not work! tycho% bug main: buf[0] = 0 main: buf[1] = 1 main: buf[2] = 2 main: buf[3] = 3 main: buf[4] = 4 main: buf[5] = 5 main: buf[6] = 6 main: buf[7] = 7 function: buf[0] = 0 ;; What happened to buf? function: buf[1] = 0 function: buf[2] = 33 function: buf[3] = -128 function: buf[4] = 14 function: buf[5] = -1 function: buf[6] = -2 function: buf[7] = -92 =================== -Ecp Eric C. Pearce pearce@tycho.yerkes.uchicago.edu or pearce@oddjob.uchicago.edu