diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-11-25 10:31:24 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-11-25 10:31:24 +0000 |
commit | 9e519b977314ee6ae132c297c1a53ea4e1b417b4 (patch) | |
tree | d0cecb570037e9dbf06589bd204c4fdd20ab6057 /gcc/md.texi | |
parent | 6e52f034c988b687802a3bc954f619dcb6c70e5c (diff) | |
download | gcc-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.texi | 10 |
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 |