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
This commit is contained in:
parent
e44713f730
commit
c78df6e155
@ -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...
|
||||
|
25
gcc/rtl.texi
25
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
|
||||
|
Loading…
Reference in New Issue
Block a user