summaryrefslogtreecommitdiff
path: root/gcc/md.texi
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-11-25 10:31:24 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-11-25 10:31:24 +0000
commit9e519b977314ee6ae132c297c1a53ea4e1b417b4 (patch)
treed0cecb570037e9dbf06589bd204c4fdd20ab6057 /gcc/md.texi
parent6e52f034c988b687802a3bc954f619dcb6c70e5c (diff)
downloadgcc-9e519b977314ee6ae132c297c1a53ea4e1b417b4.tar.gz
* toplev.c (no_new_pseudos): Define.
(rest_of_compilation): Set no_new_pseudos as needed. * emit-rtl.c (gen_reg_rtx): Abort if we try to create a new pseudo if no_new_pseudos is set. * rtl.h (no_new_pseudos): Declare it. * reload1.c (reload): Update comments. * md.texi: Corresponding changes. * reload1.c (reg_used_in_insn): Renamed from reg_used_by_pseudo. (choose_reload_regs): Rename it here as well. When computing it, also merge in used hardregs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23855 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/md.texi')
-rw-r--r--gcc/md.texi10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/md.texi b/gcc/md.texi
index f3f6cd6a3aa..6177ac2b55c 100644
--- a/gcc/md.texi
+++ b/gcc/md.texi
@@ -1746,14 +1746,20 @@ pseudo registers that did not get hard registers, while on other
machines explicit memory references will get optional reloads.
If a scratch register is required to move an object to or from memory,
-it can be allocated using @code{gen_reg_rtx} prior to reload. But this
-is impossible during and after reload. If there are cases needing
+it can be allocated using @code{gen_reg_rtx} prior to life analysis.
+
+If there are cases needing
scratch registers after reload, you must define
@code{SECONDARY_INPUT_RELOAD_CLASS} and perhaps also
@code{SECONDARY_OUTPUT_RELOAD_CLASS} to detect them, and provide
patterns @samp{reload_in@var{m}} or @samp{reload_out@var{m}} to handle
them. @xref{Register Classes}.
+@findex no_new_pseudos
+The global variable @code{no_new_pseudos} can be used to determine if it
+is unsafe to create new pseudo registers. If this variable is nonzero, then
+it is unsafe to call @code{gen_reg_rtx} to allocate a new pseudo.
+
The constraints on a @samp{mov@var{m}} must permit moving any hard
register to any other hard register provided that
@code{HARD_REGNO_MODE_OK} permits mode @var{m} in both registers and