alpha.c (alpha_emit_set_const): Add a REG_EQUAL note if a non-trivial load was emitted.
* config/alpha/alpha.c (alpha_emit_set_const): Add a REG_EQUAL note if a non-trivial load was emitted. (alpha_emit_set_const_1): Remove obsolete extension. Fix thinko in high+extra+low case. From-SVN: r51427
This commit is contained in:
parent
f90ebaae0e
commit
c6374573fc
|
@ -1,3 +1,10 @@
|
|||
2002-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config/alpha/alpha.c (alpha_emit_set_const): Add a REG_EQUAL note
|
||||
if a non-trivial load was emitted.
|
||||
(alpha_emit_set_const_1): Remove obsolete extension. Fix thinko
|
||||
in high+extra+low case.
|
||||
|
||||
2002-03-26 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config.gcc (sparc*-solaris): Use float_format=sparc.
|
||||
|
|
|
@ -2243,8 +2243,18 @@ alpha_emit_set_const (target, mode, c, n)
|
|||
}
|
||||
|
||||
/* Try 1 insn, then 2, then up to N. */
|
||||
for (i = 1; i <= n && result == 0; i++)
|
||||
result = alpha_emit_set_const_1 (target, mode, c, i);
|
||||
for (i = 1; i <= n; i++)
|
||||
{
|
||||
result = alpha_emit_set_const_1 (target, mode, c, i);
|
||||
if (result)
|
||||
{
|
||||
rtx insn = get_last_insn ();
|
||||
rtx set = single_set (insn);
|
||||
if (! CONSTANT_P (SET_SRC (set)))
|
||||
set_unique_reg_note (get_last_insn (), REG_EQUAL, GEN_INT (c));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Allow for the case where we changed the mode of TARGET. */
|
||||
if (result == target)
|
||||
|
@ -2269,15 +2279,6 @@ alpha_emit_set_const_1 (target, mode, c, n)
|
|||
= (flag_expensive_optimizations && !no_new_pseudos ? 0 : target);
|
||||
rtx temp, insn;
|
||||
|
||||
#if HOST_BITS_PER_WIDE_INT == 64
|
||||
/* We are only called for SImode and DImode. If this is SImode, ensure that
|
||||
we are sign extended to a full word. This does not make any sense when
|
||||
cross-compiling on a narrow machine. */
|
||||
|
||||
if (mode == SImode)
|
||||
c = ((c & 0xffffffff) ^ 0x80000000) - 0x80000000;
|
||||
#endif
|
||||
|
||||
/* If this is a sign-extended 32-bit constant, we can do this in at most
|
||||
three insns, so do it if we have enough insns left. We always have
|
||||
a sign-extended 32-bit constant when compiling on a narrow machine. */
|
||||
|
@ -2330,6 +2331,7 @@ alpha_emit_set_const_1 (target, mode, c, n)
|
|||
insn = gen_rtx_PLUS (mode, temp, GEN_INT (extra << 16));
|
||||
insn = gen_rtx_SET (VOIDmode, subtarget, insn);
|
||||
emit_insn (insn);
|
||||
temp = subtarget;
|
||||
}
|
||||
|
||||
if (target == NULL)
|
||||
|
|
Loading…
Reference in New Issue