aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2001-05-14 05:11:38 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2001-05-14 05:11:38 +0000
commitc78df6e155972bc633caad417bdcdd2951ac630f (patch)
tree4ee7c4ce3bfc3917cd91e24dfa37f55e17c0fc53
parente44713f730a808084ead53f7d833bce8acf7eec5 (diff)
downloadgcc-c78df6e155972bc633caad417bdcdd2951ac630f.zip
gcc-c78df6e155972bc633caad417bdcdd2951ac630f.tar.gz
gcc-c78df6e155972bc633caad417bdcdd2951ac630f.tar.bz2
rtl.texi (CALL_INSN_FUNCTION_USAGE): Note that (and when) it may contain MEMs.
* rtl.texi (CALL_INSN_FUNCTION_USAGE): Note that (and when) it may contain MEMs. Remove useless distinction about clobbering registers. From-SVN: r42060
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/rtl.texi25
2 files changed, 25 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a6929b4..b5937f0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2001-05-14 Alexandre Oliva <aoliva@redhat.com>
+
+ * rtl.texi (CALL_INSN_FUNCTION_USAGE): Note that (and when) it may
+ contain MEMs. Remove useless distinction about clobbering
+ registers.
+
2001-05-13 Geoff Keating <geoffk@redhat.com>
* config/rs6000/rs6000.h (EXCEPTION_SECTION): Move to...
diff --git a/gcc/rtl.texi b/gcc/rtl.texi
index 6c256b4..026172c 100644
--- a/gcc/rtl.texi
+++ b/gcc/rtl.texi
@@ -2530,12 +2530,25 @@ unpredictably.
accessed in the same way and in addition contain a field
@code{CALL_INSN_FUNCTION_USAGE}, which contains a list (chain of
@code{expr_list} expressions) containing @code{use} and @code{clobber}
-expressions that denote hard registers used or clobbered by the called
-function. A register specified in a @code{clobber} in this list is
-modified @emph{after} the execution of the @code{call_insn}, while a
-register in a @code{clobber} in the body of the @code{call_insn} is
-clobbered before the insn completes execution. @code{clobber}
-expressions in this list augment registers specified in
+expressions that denote hard registers and @code{MEM}s used or
+clobbered by the called function.
+
+A @code{MEM} generally points to a stack slots in which arguments passed
+to the libcall by reference (@pxref{Register Arguments,
+FUNCTION_ARG_PASS_BY_REFERENCE}) are stored. If the argument is
+caller-copied (@pxref{Register Arguments, FUNCTION_ARG_CALLEE_COPIES}),
+the stack slot will be mentioned in @code{CLOBBER} and @code{USE}
+entries; if it's callee-copied, only a @code{USE} will appear, and the
+@code{MEM} may point to addresses that are not stack slots. These
+@code{MEM}s are used only in libcalls, because, unlike regular function
+calls, @code{CONST_CALL}s (which libcalls generally are, @pxref{Flags,
+CONST_CALL_P}) aren't assumed to read and write all memory, so flow
+would consider the stores dead and remove them. Note that, since a
+libcall must never return values in memory (@pxref{Aggregate Return,
+RETURN_IN_MEMORY}), there will never be a @code{CLOBBER} for a memory
+address holding a return value.
+
+@code{CLOBBER}ed registers in this list augment registers specified in
@code{CALL_USED_REGISTERS} (@pxref{Register Basics}).
@findex code_label