On Sun, May 27, 2001 at 12:14:43AM +0200, Kevin D. Kissell wrote: > Fair enough. It was an offhand remark. But seriously, what does > the "R" constraint mean here? The only documentation I've got > (http://linux.fh-heilbronn.de/doku/GNU/docs/gcc/gcc_163.html#SEC163) > says that "Q" through "U" are reserved for use with EXTRA_CONSTRAINT > in machine-dependent definitions of arbitrary operand types. When > and where does it get bound for MIPS gcc, and what is it supposed > to mean? If I compile this kind of fragment using a "m" constraint, > it seems to do the right thing, at least on my archaic native compiler. Correct, "R" is a machine dependent constraint. At least when it's working right it's supposed to expand into offset(reg) where offset is limited to 16 bits. That's implemented in gcc/config/gcc/mips/mips.h's EXTRA_CONSTRAINT macro. In case of an "R" constraint gcc calls the simple_memory_operand() function which will return 1 if the memory operand fits into a single instruction. Ralf