diff options
author | Jan Hubicka <jh@suse.cz> | 2003-01-24 23:45:58 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2003-01-24 22:45:58 +0000 |
commit | a560d4d4d9f0fc66fd7634dac3b13d72ee0790d3 (patch) | |
tree | 1090cf96c575f2f136a1b44c8d8d83d0bc0b04d3 /gcc/regclass.c | |
parent | 1d0ea52e2dc53ed8ecc7f3e95047a2a921b7cb3a (diff) | |
download | gcc-a560d4d4d9f0fc66fd7634dac3b13d72ee0790d3.tar.gz |
emit-rtl.c (reg_attrs_htab): New static variable.
* emit-rtl.c (reg_attrs_htab): New static variable.
(reg_attrs_htab_hash, reg_attrs_htab_eq, get_reg_attrs): New static
functions.
(reg_rtx): Do not maintain regno_decl.
(gen_rtx_REG_offset, set_reg_attrs_from_mem, set_delc_rtx,
set_mem_attrs_from_reg): New global function.
(init_emit): Do not initialize regno_decl.
(init_emit_once): initialize reg_attrs_htab.
* final.c (alter_subreg): Do not replace REG by SUBREG.
(gen_mem_expr_from_op): Improve output.
(output_asm_operands): Likewise.
* function.c (assign_params): Do not set REGNO_DECL.
* function.h (struct function): Kill regno_decl.
(REGNO_DECL): Kill.
* gengtype.c (adjust_field_rtx_def): Handle new field of reg.
* print_rtl.c (print_rtx): Output REG information.
* regclass.c (reg_scan_mark_refs): Update attrs.
* reload1.c (alter_reg): Likewise.
* simplify_rtx.c (simplify_subreg): Likewise.
* stmt.c (expand_decl): Likewise.
* rtl.def (REG): Add new field.
* rtl.h (struct reg_attrs): New.
(rtunion_def): At rtreg.
(X0MEMATTR): Add checking.
(X0REGATTR, REG_ATTRS, REG_EXPR, REG_OFFSET): New macro.
(set_reg_attrs_from_mem, set_mem_attrs_from_reg, gen_rtx_REG_offset):
Declare.
* tree.h (SET_DECL_RTL): Call set_decl_rtl.
From-SVN: r61741
Diffstat (limited to 'gcc/regclass.c')
-rw-r--r-- | gcc/regclass.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/regclass.c b/gcc/regclass.c index 4612f713bf4..21cb6ead80f 100644 --- a/gcc/regclass.c +++ b/gcc/regclass.c @@ -2520,7 +2520,7 @@ reg_scan_mark_refs (x, insn, note_flag, min_regno) REG_POINTER (SET_DEST (x)) = 1; /* If this is setting a register from a register or from a simple - conversion of a register, propagate REG_DECL. */ + conversion of a register, propagate REG_EXPR. */ if (GET_CODE (dest) == REG) { rtx src = SET_SRC (x); @@ -2531,10 +2531,10 @@ reg_scan_mark_refs (x, insn, note_flag, min_regno) || (GET_CODE (src) == SUBREG && subreg_lowpart_p (src))) src = XEXP (src, 0); - if (GET_CODE (src) == REG && REGNO_DECL (REGNO (src)) == 0) - REGNO_DECL (REGNO (src)) = REGNO_DECL (REGNO (dest)); - else if (GET_CODE (src) == REG && REGNO_DECL (REGNO (dest)) == 0) - REGNO_DECL (REGNO (dest)) = REGNO_DECL (REGNO (src)); + if (!REG_ATTRS (dest) && REG_P (src)) + REG_ATTRS (dest) = REG_ATTRS (src); + if (!REG_ATTRS (dest) && GET_CODE (src) == MEM) + set_reg_attrs_from_mem (dest, src); } /* ... fall through ... */ |