reload.c (find_reloads_toplev): Use gen_lowpart common to convert between constant representations when...
* reload.c (find_reloads_toplev): Use gen_lowpart common to convert between constant representations when we have (SUBREG (REG)) with REG equivalent to a constant. From-SVN: r20398
This commit is contained in:
parent
93ec7bc577
commit
0365438d33
|
@ -1,3 +1,9 @@
|
|||
Wed Jun 10 02:11:55 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* reload.c (find_reloads_toplev): Use gen_lowpart common to convert
|
||||
between constant representations when we have (SUBREG (REG)) with
|
||||
REG equivalent to a constant.
|
||||
|
||||
Wed Jun 10 01:39:00 1998 Juha Sarlin <juha@c3l.tyreso.se>
|
||||
|
||||
* h8300.c (get_shift_alg): Add special cases for shifts of 8 and 24.
|
||||
|
|
13
gcc/reload.c
13
gcc/reload.c
|
@ -4289,7 +4289,18 @@ find_reloads_toplev (x, opnum, type, ind_levels, is_set_dest)
|
|||
&& (tem = operand_subword (reg_equiv_constant[regno],
|
||||
SUBREG_WORD (x), 0,
|
||||
GET_MODE (SUBREG_REG (x)))) != 0)
|
||||
return tem;
|
||||
{
|
||||
/* TEM is now a word sized constant for the bits from X that
|
||||
we wanted. However, TEM may be the wrong representation.
|
||||
|
||||
Use gen_lowpart_common to convert a CONST_INT into a
|
||||
CONST_DOUBLE and vice versa as needed according to by the mode
|
||||
of the SUBREG. */
|
||||
tem = gen_lowpart_common (GET_MODE (x), tem);
|
||||
if (!tem)
|
||||
abort ();
|
||||
return tem;
|
||||
}
|
||||
|
||||
/* If the SUBREG is wider than a word, the above test will fail.
|
||||
For example, we might have a SImode SUBREG of a DImode SUBREG_REG
|
||||
|
|
Loading…
Reference in New Issue