$ uname -a IRIX64 hostname 6.5 10070055 IP35 $ gcc -O -mabi=64 -c problem.c as: Error: /usr/tmp/ccj6mI7m.s, line 1486: Macro instruction used in branch delay slot $ gcc -O2 -mabi=64 -c problem.c $ gcc -v Reading specs from /home/projects/foo/install/lib/gcc-lib/mips-sgi-irix6.5/3.3.3/specs Configured with: ./configure --prefix=/home/projects/foo/install Thread model: single gcc version 3.3.3 http://www.magnesium.net/~thim/tmp/problem.c This file comes from 'gcc -E isam/_packrec.c', from the MySQL 4.1.1 distribution. This is a client's machine, so unfortunately I can't offer you a login. There's an easy work-around (use -O2 or -O3 instead of -O), so this isn't critical for me. Thanks!
Created attachment 5884 [details] test case file
Confirmed. Here's a short testcase that causes assembler errors also for -O2 and -O3. The 3.3 branch is affected, but not the 3.4 branch. I can't test mainline right now. =================================================================== int x[]= { 0 }; void foo(short **p, int *a, int *b, int i, unsigned u) { while (i+1) if (i) **p= x[0]; else **p= (u ? ((*a >> *b-i) & x[u]) : bar()) + 32768 + i; } ===================================================================
slip.
I am going to assume you did not mean to close this bug, only to move the target milestone.
I don't think this bug will be fixed for 3.3.x. The testcas is known to work 3.4.x (higher I suppose). So closing as won't fix.