summaryrefslogtreecommitdiff
path: root/gcc/rtl.texi
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2001-01-19 18:28:58 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2001-01-19 18:28:58 +0000
commit4b3032277cf18539af47a51378bddd23f0bd9ded (patch)
tree086e54d82c89c2d5ce11a4c14e8e7c5454d17972 /gcc/rtl.texi
parent9a504a44c5d30a9057d15fb7d292cc52b098a968 (diff)
downloadgcc-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.texi17
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