"Meissner, Michael" <michael.meissner@xxxxxxx> writes: > I haven't programmed in the MIPS for awhile, but when I did, GCC > expected the assembler to do the hazard detection (ie, if you > disassemble the object code, there should be a NOP between the lh and > the bnez if -mips1 was passed to the assembler. GCC used to have a > separate hazard detection pass many years ago, but it was removed when > GAS added the support. gcc did get hazard detection added back in again, though, and gcc can now generate the whole function in .set noreorder. See, e.g., mips_avoid_hazard in config/mips/mips.c. I don't know what the original problem is here. It may be a bug, or gcc may be in a mode in which it expects the assembler to insert the nop, or it may be necessary to use an appropriate -march option, or it may be something else entirely. Ian