c4x.c (c4x_emit_move_sequence): Force invalid QImode constants into memory if...
* config/c4x/c4x.c (c4x_emit_move_sequence): Force invalid QImode constants into memory if we get called directly from gen_move_insn rather than emit_move_insn. (c4x_legitimize_address): Fix up LABEL_REF addresses. From-SVN: r26106
This commit is contained in:
parent
ae9e7e16cd
commit
305902b006
|
@ -1,3 +1,10 @@
|
|||
Fri Apr 2 11:58:22 1999 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
|
||||
|
||||
* config/c4x/c4x.c (c4x_emit_move_sequence): Force invalid QImode
|
||||
constants into memory if we get called directly from gen_move_insn
|
||||
rather than emit_move_insn.
|
||||
(c4x_legitimize_address): Fix up LABEL_REF addresses.
|
||||
|
||||
Thu Apr 1 12:04:05 1999 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* expr.c (store_field): When check direct_store, assume all complex
|
||||
|
|
|
@ -1058,6 +1058,13 @@ c4x_emit_move_sequence (operands, mode)
|
|||
constants... */
|
||||
op1 = force_const_mem (mode, op1);
|
||||
}
|
||||
else if (mode == QImode && CONSTANT_P (op1) && ! LEGITIMATE_CONSTANT_P (op1))
|
||||
{
|
||||
/* We shouldn't need this test if only emit_move_insn was called.
|
||||
However, some routines call gen_move_insn which doesn't check that
|
||||
the constants are legitimate. */
|
||||
op1 = force_const_mem (mode, op1);
|
||||
}
|
||||
else if (mode == HImode && CONSTANT_P (op1) && ! LEGITIMATE_CONSTANT_P (op1))
|
||||
{
|
||||
/* We could load all sorts of constants in two goes by pulling all
|
||||
|
@ -1431,7 +1438,8 @@ c4x_legitimize_address (orig, mode)
|
|||
rtx orig ATTRIBUTE_UNUSED;
|
||||
enum machine_mode mode ATTRIBUTE_UNUSED;
|
||||
{
|
||||
if (GET_CODE (orig) == SYMBOL_REF)
|
||||
if (GET_CODE (orig) == SYMBOL_REF
|
||||
|| GET_CODE (orig) == LABEL_REF)
|
||||
{
|
||||
if (mode == HImode || mode == HFmode)
|
||||
{
|
||||
|
@ -2183,9 +2191,9 @@ static int
|
|||
c4x_K_constant (op)
|
||||
rtx op;
|
||||
{
|
||||
if (TARGET_C3X)
|
||||
if (TARGET_C3X || ! c4x_immed_int_constant (op))
|
||||
return 0;
|
||||
return c4x_immed_int_constant (op) && IS_INT5_CONST (INTVAL (op));
|
||||
return IS_INT5_CONST (INTVAL (op));
|
||||
}
|
||||
|
||||
|
||||
|
@ -2876,7 +2884,7 @@ call_address_operand (op, mode)
|
|||
}
|
||||
|
||||
|
||||
/* Symbolic operand. */
|
||||
/* Symbolic address operand. */
|
||||
|
||||
int
|
||||
symbolic_address_operand (op, mode)
|
||||
|
@ -4387,4 +4395,3 @@ c4x_adjust_cost (insn, link, dep_insn, cost)
|
|||
else
|
||||
abort ();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue