Commit 39bdfaa0 by Richard Henderson

Clarify LEGITIMIZE_RELOAD_ADDRESS issues a tad.

From-SVN: r18997
parent 0022a940
...@@ -4243,21 +4243,26 @@ LEGITIMIZE_RELOAD_ADDRESS appropriately, the intermediate addresses ...@@ -4243,21 +4243,26 @@ LEGITIMIZE_RELOAD_ADDRESS appropriately, the intermediate addresses
generated for adjacent some stack slots can be made identical, and thus generated for adjacent some stack slots can be made identical, and thus
be shared. be shared.
@findex strict_memory_address_p @emph{Note}: This macro should be used with caution. It is necessary
The macro definition may use @code{strict_memory_address_p} to test if to know something of how reload works in order to effectively use this,
the address has become legitimate. and it is quite easy to produce macros that build in too much knowledge
of reload internals.
@findex push_reload @findex push_reload
It may use @code{push_reload} to indicate parts that need reloading. The macro definition should use @code{push_reload} to indicate parts that
@var{opnum}, @var{type} and @var{ind_levels} are usually suitable to be need reloading; @var{opnum}, @var{type} and @var{ind_levels} are usually
passed unaltered to push_reload. suitable to be passed unaltered to @code{push_reload}.
The code generated by this macro should not alter the substructure of The code generated by this macro must not alter the substructure of
@var{x}. If it transforms @var{x} into a more legitimate form, it @var{x}. If it transforms @var{x} into a more legitimate form, it
should assign @var{x} (which will always be a C variable) a new value. should assign @var{x} (which will always be a C variable) a new value.
This also applies to parts that you change indirectly by calling This also applies to parts that you change indirectly by calling
@code{push_reload}. @code{push_reload}.
@findex strict_memory_address_p
The macro definition may use @code{strict_memory_address_p} to test if
the address has become legitimate.
@findex copy_rtx @findex copy_rtx
If you want to change only a part of @var{x}, one standard way of doing If you want to change only a part of @var{x}, one standard way of doing
this is to use @code{copy_rtx}. Note, however, that is unshares only a this is to use @code{copy_rtx}. Note, however, that is unshares only a
...@@ -4266,11 +4271,6 @@ top level, you'll need to replace first the top leve ...@@ -4266,11 +4271,6 @@ top level, you'll need to replace first the top leve
It is not necessary for this macro to come up with a legitimate It is not necessary for this macro to come up with a legitimate
address; but often a machine-dependent strategy can generate better code. address; but often a machine-dependent strategy can generate better code.
@emph{Note}: This macro should be used with caution. It is necessary
to know something of how reload works in order to effectively use this,
and it is quite easy to produce macros that build in too much knowledge
of reload internals.
@findex GO_IF_MODE_DEPENDENT_ADDRESS @findex GO_IF_MODE_DEPENDENT_ADDRESS
@item GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label}) @item GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label})
A C statement or compound statement with a conditional @code{goto A C statement or compound statement with a conditional @code{goto
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment