What is the MIPS Constraints 'c' and 'j'

Ian Lance Taylor ian@airs.com
Tue Feb 21 06:58:00 GMT 2006


"Eric Fisher" <joefoxreal@gmail.com> writes:

> While I read the mips.md, I find there are some constraints used in
> function call templates, such as 'c' and 'j'. But these two
> constraints seem not be defined and I can't find their explanation
> both in source files and gcc internal. Well, aren't there anywhere I
> missed? Otherwise, how can they work?

'c' and 'j' are register classes.  They are defined by
REG_CLASS_FROM_LETTER, is defined to use the array mips_char_to_class,
which is initialized in override_options in mips.c.

'c' is the register class used to hold the address of a function when
calling a function via a register.

'j' is the register class used to hold the address of a function when
calling a function using the SVR4 calling convention, aka -mabicalls.

In fact 'c' and 'j' are the same register class if -mabicalls is in
effect, the class PIC_FN_ADDR_REG, which contains one register, $25.

Ian



More information about the Gcc mailing list