reload_in/out register class constraints
Richard Henderson
rth@redhat.com
Wed Jul 18 14:36:00 GMT 2001
On Wed, Jul 18, 2001 at 11:01:42AM -0700, Mark Mitchell wrote:
> This needs documentation in some .texi file, probably, since it would
> seem to be something you need to know to make a new port.
It appears that none of the special cases wrt these patterns
were documented.
r~
Index: md.texi
===================================================================
RCS file: /cvs/gcc/egcs/gcc/doc/md.texi,v
retrieving revision 1.12
diff -c -p -d -r1.12 md.texi
*** md.texi 2001/07/09 06:10:09 1.12
--- md.texi 2001/07/18 21:32:47
*************** move between operand 0 and operand 1. O
*** 2076,2081 ****
--- 2076,2092 ----
register. See the discussion of the @code{SECONDARY_RELOAD_CLASS}
macro in @pxref{Register Classes}.
+ There are special restrictions on the form of the @code{match_operand}s
+ used in these patterns. First, only the predicate for the reload
+ operand is examined, i.e. @code{reload_in} examines operand 1, but not
+ the predicates for operand 0 or 2. Second, there may only be one
+ alternative in the constraints. Third, only a single register class
+ letter may be used for the constraint; subsequent constraint letters
+ are ignored. As a special exception, an empty constraint string
+ matches the @code{ALL_REGS} register class. This may relieve ports
+ of the burden of defining an @code{ALL_REGS} constraint letter just
+ for these patterns.
+
@cindex @code{movstrict@var{m}} instruction pattern
@item @samp{movstrict@var{m}}
Like @samp{mov@var{m}} except that if operand 0 is a @code{subreg}
More information about the Gcc-patches
mailing list