Aallegra.325 net.bugs.4bsd utcsrgv!utzoo!decvax!ucbvax!mhtsa!allegra!honey Fri Mar 19 22:49:46 1982 one or two bugs in /lib/c2 the following routine breaks c2: main() { short s[10]; register short *ptr = s; long l; printf("in: %x\n", ptr); l = *ptr++ & 0xFFFF; /* auto-increment ptr's register */ printf("out: %x\n", ptr); } the dereference + mask gets compiled into cvtwl + bicl2, which c2 turns into extvz. when ptr is dereferenced it is incremented by 2 in cvtwl (word operand), by 1 in extvz (byte operand). another application of c2 replaces extvz by movzwl (word operand). here two wrongs do make a right. a tip of the honey hat to jfr. ----------------------------------------------------------------- gopher://quux.org/ conversion by John Goerzen of http://communication.ucsd.edu/A-News/ This Usenet Oldnews Archive article may be copied and distributed freely, provided: 1. There is no money collected for the text(s) of the articles. 2. The following notice remains appended to each copy: The Usenet Oldnews Archive: Compilation Copyright (C) 1981, 1996 Bruce Jones, Henry Spencer, David Wiseman.