Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!uakari.primate.wisc.edu!zazen!psl.wisc.edu!khan From: khan@pslu1.psl.wisc.edu (Mumit Khan) Newsgroups: comp.unix.ultrix Subject: auto-increment bug in Ultrix(4.1) C (DS3100) Message-ID: <1991Mar31.214127.5224@pslu1.psl.wisc.edu> Date: 31 Mar 91 21:41:27 GMT Reply-To: khan@xraylith.wisc.edu (Mumit Khan) Distribution: usa Organization: Center for X-ray Lithography Lines: 69 ---------------- MIPS C bug in post-increment of variables ---------- MACHINE = DS3100 OS = ULTRIX V4.1 (Rev. 52) System #1: Wed Dec 19 15:20:46 CST 1990 UWS V4.1 (Rev. 197) Note the output from the following program in various cases. MIPS C is the only one causing the problem (of not incrementing the global shared variable "pc" in the call (*(*pc++))(). ------------------------ START OF PROGRAM --------------------------- #include typedef int (*Inst)(); #define StopInst (Inst) 0 static int dummy (); static Inst machine[] = {dummy, dummy, dummy, dummy, dummy, StopInst}; static Inst *pc = NULL; main () { extern int start; fprintf (stderr, "Starting pc: %x\n", pc = machine); for (; *pc != StopInst;) (*(*pc++)) (); /* BUG BUG BUG BUG BUG BUG BUG */ } static int dummy () { extern Inst *pc; fprintf (stderr, "PC (in dummy): %x\n", pc); return 0; } ------------------------- END OF PROGRAM ------------------------ OUTPUT FROM MIPS CC. (Version 2.1) > bug-mips-cc Starting pc: 10000430 PC (in dummy): 10000430 <--- NOTE *NO* INCREMENT PC (in dummy): 10000434 PC (in dummy): 10000438 PC (in dummy): 1000043c PC (in dummy): 10000440 OUTPUT FROM MIPS GCC. (Version 2.1) > gcc -v gcc version 1.37.1 OSF 1.9.2.14 Ultrix Dec Mips Dec 29 1990 > bug-mips-gcc Starting pc: 10000460 PC (in dummy): 10000464 <--- NOTE INCREMENT PC (in dummy): 10000468 PC (in dummy): 1000046c PC (in dummy): 10000470 PC (in dummy): 10000474 OUTPUT FROM SparcStation (IPC) CC. (SunOS rel. 4.1.1) > bug-sun4-cc Starting pc: 40a8 PC (in dummy): 40ac <--- NOTE INCREMENT PC (in dummy): 40b0 PC (in dummy): 40b4 PC (in dummy): 40b8 PC (in dummy): 40bc ---------------------------------------------------------------------