diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-19 18:28:58 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-19 18:28:58 +0000 |
commit | 4b3032277cf18539af47a51378bddd23f0bd9ded (patch) | |
tree | 086e54d82c89c2d5ce11a4c14e8e7c5454d17972 /gcc/rtl.texi | |
parent | 9a504a44c5d30a9057d15fb7d292cc52b098a968 (diff) | |
download | gcc-4b3032277cf18539af47a51378bddd23f0bd9ded.tar.gz |
* rtl.texi (SET, CLOBBER): Document PARALLEL as SET_DEST possibility.
* flow.c (mark_set_1, case PARALLEL): Don't require BLKmode, allow
element to be null, and always expect an EXPR_LIST.
* rtlanal.c (reg_overlap_mentioned_p, note_stores): Likewise.
* sched-deps.c (sched_analyze_1): Likewise.
* sched-rgn.c (check_live_1, update_live_1): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39141 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/rtl.texi')
-rw-r--r-- | gcc/rtl.texi | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/gcc/rtl.texi b/gcc/rtl.texi index 0e9d8c48652..4cb0eb7014b 100644 --- a/gcc/rtl.texi +++ b/gcc/rtl.texi @@ -1923,8 +1923,8 @@ the operands of these. @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} or +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}.@refill If @var{lval} is a @code{reg}, @code{subreg} or @code{mem}, it has a @@ -1950,6 +1950,14 @@ The latter case represents a ``test'' instruction. The expression @code{(set (cc0) (compare (reg:@var{m} @var{n}) (const_int 0)))}. Use the former expression to save space during the compilation. +If @var{lval} is a @code{parallel}, it is used to represent the case of +a function returning a structure in multiple registers. Each element +of the @code{paralllel} is an @code{expr_list} whose first operand is a +@code{reg} and whose second operand is a @code{const_int} representing the +offset (in bytes) into the structure at which the data in that register +corresponds. The first element may be null to indicate that the structure +is also passed partly in memory. + @cindex jump instructions and @code{set} @cindex @code{if_then_else} usage If @var{lval} is @code{(pc)}, we have a jump instruction, and the @@ -2006,7 +2014,7 @@ addressed. @item (clobber @var{x}) Represents the storing or possible storing of an unpredictable, undescribed value into @var{x}, which must be a @code{reg}, -@code{scratch} or @code{mem} expression. +@code{scratch}, @code{parallel} or @code{mem} expression. One place this is used is in string instructions that store standard values into particular hard registers. It may not be worth the @@ -2015,7 +2023,8 @@ inform the compiler that the registers will be altered, lest it attempt to keep data in them across the string instruction. If @var{x} is @code{(mem:BLK (const_int 0))}, it means that all memory -locations must be presumed clobbered. +locations must be presumed clobbered. If @var{x} is a @code{parallel}, +it has the same meaning as a @code{parallel} in a @code{set} expression. Note that the machine description classifies certain hard registers as ``call-clobbered''. All function call instructions are assumed by |