Patch from Richard Sandiford <rsandifo@redhat.com>
* reload1.c (choose_reload_regs): Prevent the find_equiv_reg() code from inheriting a subreg equivalence with a non-spill register. * tree.h (DECL_FUNCTION_CODE): Document that it is overloaded. From-SVN: r94529
This commit is contained in:
parent
8c94c75ae7
commit
9c0a30c366
@ -1,3 +1,11 @@
|
||||
2005-02-01 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
Patch from Richard Sandiford <rsandifo@redhat.com>
|
||||
* reload1.c (choose_reload_regs): Prevent the find_equiv_reg() code
|
||||
from inheriting a subreg equivalence with a non-spill register.
|
||||
|
||||
* tree.h (DECL_FUNCTION_CODE): Document that it is overloaded.
|
||||
|
||||
2005-02-01 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* config/frv/frv.c (movcc_fp_destination_operand): New.
|
||||
|
@ -5589,6 +5589,15 @@ choose_reload_regs (struct insn_chain *chain)
|
||||
gcc_assert (GET_CODE (equiv) == SUBREG);
|
||||
regno = subreg_regno (equiv);
|
||||
equiv = gen_rtx_REG (rld[r].mode, regno);
|
||||
/* If we choose EQUIV as the reload register, but the
|
||||
loop below decides to cancel the inheritance, we'll
|
||||
end up reloading EQUIV in rld[r].mode, not the mode
|
||||
it had originally. That isn't safe when EQUIV isn't
|
||||
available as a spill register since its value might
|
||||
still be live at this point. */
|
||||
for (i = regno; i < regno + (int) rld[r].nregs; i++)
|
||||
if (TEST_HARD_REG_BIT (reload_reg_unavailable, i))
|
||||
equiv = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2000,8 +2000,10 @@ struct tree_binfo GTY (())
|
||||
that describes the status of this function. */
|
||||
#define DECL_STRUCT_FUNCTION(NODE) (FUNCTION_DECL_CHECK (NODE)->decl.u2.f)
|
||||
|
||||
/* For FUNCTION_DECL, if it is built-in,
|
||||
this identifies which built-in operation it is. */
|
||||
/* For FUNCTION_DECL, if it is built-in, this identifies which built-in
|
||||
operation it is. Note, however, that this field is overloaded, with
|
||||
DECL_BUILT_IN_CLASS as the discriminant, so the latter must always be
|
||||
checked before any access to the former. */
|
||||
#define DECL_FUNCTION_CODE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl.u1.f)
|
||||
|
||||
/* The DECL_VINDEX is used for FUNCTION_DECLS in two different ways.
|
||||
|
Loading…
Reference in New Issue
Block a user