diff options
author | J"orn Rennecke <joern.rennecke@st.com> | 2005-11-24 18:55:53 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2005-11-24 18:55:53 +0000 |
commit | 8a99f6f92fd255690cdc0a1712c7c2f7e1bdcfe8 (patch) | |
tree | c4e97f2cd689b954ad779a8f0f2c7757912a91f8 /gcc/doc/md.texi | |
parent | 1a598a979ba864052b8a922d957c038493411e47 (diff) | |
download | gcc-8a99f6f92fd255690cdc0a1712c7c2f7e1bdcfe8.zip gcc-8a99f6f92fd255690cdc0a1712c7c2f7e1bdcfe8.tar.gz gcc-8a99f6f92fd255690cdc0a1712c7c2f7e1bdcfe8.tar.bz2 |
re PR target/21623 (ICE in reload_cse_simplify_operands, at postreload.c:391)
PR target/21623:
* regclass.c (FORBIDDEN_INC_DEC_CLASSES): Remove
SECONDARY_INPUT_RELOAD_CLASS and SECONDARY_OUTPUT_RELOAD_CLASS tests.
(init_fake_stack_mems): Remove HAVE_SECONDARY_RELOADS test.
(memory_move_secondary_cost, init_reg_autoinc): Remove
SECONDARY_INPUT_RELOAD_CLASS / SECONDARY_OUTPUT_RELOAD_CLASS tests.
Replace SECONDARY_{IN,OUT}PUT_RELOAD_CLASS use with
secondary_reload_class call.
(copy_cost): Likewise. Add new parameter prev_sri. Changed all
callers.
* reload.c (entire file): Remove HAVE_SECONDARY_RELOADS checks.
(push_secondary_reload): Use secondary_reload target hook.
(secondary_reload_class, scratch_reload_class): New functions.
(push_reload): Remove SECONDARY_INPUT_RELOAD_CLASS and
SECONDARY_OUTPUT_RELOAD_CLASS tests. Replace
SECONDARY_{IN,OUT}PUT_RELOAD_CLASS use with secondary_reload_class call.
* reload.h (HAVE_SECONDARY_RELOADS): Don't define nor test.
(secondary_reload_class, scratch_reload_class): Declare.
* reload1.c: Include target.h.
(reload_adjust_reg_for_temp): New function.
(reload_adjust_reg_for_icode): Likewise.
(choose_reload_regs): Remove SECONDARY_INPUT_RELOAD_CLASS test.
Replace SECONDARY_INPUT_RELOAD_CLASS use with secondary_reload_class
call.
(emit_input_reload_insns): Likewise. Rewrite secondary reload checks
for inheritance. Support case when both secondary & tertiary reloads
are for intermediate registers.
(emit_output_reload_insns): Replace SECONDARY_OUTPUT_RELOAD_CLASS use
with secondary_reload_class call. Support case when both secondary
& tertiary reloads are for intermediate registers.
* target-def.h (TARGET_SECONDARY_RELOAD): Provide default definition.
(TARGET_INITIALIZER) Add TARGET_SECONDARY_RELOAD.
* target.h (secondary_reload_info): New struct / typedef.
(struct gcc_target): New member secondary_reload.
* targhooks.c Include reload.h, optabs.h and recog.h.
(default_secondary_reload): New function.
* targhooks.h (default_secondary_reload): Declare.
* doc/tm.texi: Document secondary_reload target hook. Update
description of SECONDARY_*RELOAD_CLASS and reload_{in,out}<mode>.
* doc/md.texi: Likewise.
* sh-protos.h (sh_secondary_reload): Declare.
* sh.c (TARGET_SECONDARY_RELOAD): Override.
(sh_secondary_reload): New function.
* sh.h (SECONDARY_INOUT_RELOAD_CLASS): Don't define.
(SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
(SECONDARY_INPUT_RELOAD_CLASS): Likewise.
(HAVE_SECONDARY_RELOADS): Define.
* sh.md (reload_indf): Rename to:
(reload_indf__frn).
(reload_outdf): Rename to:
(reload_outdf__RnFRm).
(reload_insf): Rename to:
(reload_insf__frn).
(reload_insi): Rename to:
(reload_insi__i_fpul).
From-SVN: r107468
Diffstat (limited to 'gcc/doc/md.texi')
-rw-r--r-- | gcc/doc/md.texi | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index 115de4a..54ad659 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -2920,10 +2920,7 @@ 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 life analysis. If there are cases which need scratch registers during or after reload, -you must define @code{SECONDARY_INPUT_RELOAD_CLASS} and/or -@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}. +you must provide an appropriate secondary_reload target hook. @findex no_new_pseudos The global variable @code{no_new_pseudos} can be used to determine if it @@ -2953,6 +2950,9 @@ reload into a floating point register. @cindex @code{reload_out} instruction pattern @item @samp{reload_in@var{m}} @itemx @samp{reload_out@var{m}} +These named patterns have been obsoleted by the target hook +@code{secondary_reload}. + Like @samp{mov@var{m}}, but used when a scratch register is required to move between operand 0 and operand 1. Operand 2 describes the scratch register. See the discussion of the @code{SECONDARY_RELOAD_CLASS} |