This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Unreviewed documentation patch


On Sun, 11 May 2003, Richard Henderson wrote:

> On Sat, May 10, 2003 at 08:09:21AM -0600, Roger Sayle wrote:
> > 	* doc/rtl.texi: Document zero_extract and sign_extract as valid
> > 	destinations of a set insn.
>
> I guess this is ok.
>
> We should probably clean things up so that sign_extract is never
> used (or checked) as a destination.  The distinction between the
> two only makes sense when being read.

Ok.  Here's what I checked in.

I originally documented both zero_extract and sign_extract for symmetry,
but I agree that only allowing "zero_extract" as a SET_DEST would force
callers to canonicalize the two equivalent forms to a single prefered
representation.

Many thanks again.


2003-05-12  Roger Sayle  <roger@eyesopen.com>

	* doc/rtl.texi: Document zero_extract as a valid destination
	of a set insn.

Index: rtl.texi
===================================================================
RCS file: /cvs/gcc/gcc/gcc/doc/rtl.texi,v
retrieving revision 1.55
diff -c -3 -p -r1.55 rtl.texi
*** rtl.texi	27 Apr 2003 18:57:51 -0000	1.55
--- rtl.texi	12 May 2003 13:19:22 -0000
*************** the operands of these.
*** 2368,2376 ****
  @item (set @var{lval} @var{x})
  Represents the action of storing the value of @var{x} into the place
  represented by @var{lval}.  @var{lval} must be an expression
! representing a place that can be stored in: @code{reg} (or @code{subreg}
! or @code{strict_low_part}), @code{mem}, @code{pc}, @code{parallel}, or
! @code{cc0}.

  If @var{lval} is a @code{reg}, @code{subreg} or @code{mem}, it has a
  machine mode; then @var{x} must be valid for that mode.
--- 2368,2376 ----
  @item (set @var{lval} @var{x})
  Represents the action of storing the value of @var{x} into the place
  represented by @var{lval}.  @var{lval} must be an expression
! representing a place that can be stored in: @code{reg} (or @code{subreg},
! @code{strict_low_part} or @code{zero_extract}), @code{mem}, @code{pc},
! @code{parallel}, or @code{cc0}.

  If @var{lval} is a @code{reg}, @code{subreg} or @code{mem}, it has a
  machine mode; then @var{x} must be valid for that mode.
*************** rest of the register receives an undefin
*** 2383,2392 ****
  the mode of the register, the rest of the register can be changed in
  an undefined way.

! If @var{lval} is a @code{strict_low_part} of a @code{subreg}, then the
! part of the register specified by the machine mode of the
! @code{subreg} is given the value @var{x} and the rest of the register
! is not changed.

  If @var{lval} is @code{(cc0)}, it has no machine mode, and @var{x} may
  be either a @code{compare} expression or a value that may have any mode.
--- 2383,2392 ----
  the mode of the register, the rest of the register can be changed in
  an undefined way.

! If @var{lval} is a @code{strict_low_part} or @code{zero_extract}
! of a @code{subreg}, then the part of the register specified by the
! machine mode of the @code{subreg} is given the value @var{x} and
! the rest of the register is not changed.

  If @var{lval} is @code{(cc0)}, it has no machine mode, and @var{x} may
  be either a @code{compare} expression or a value that may have any mode.

Roger
--


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]