combine.c (expand_field_assignment): Don't do bitwise operations on MODE_FLOAT; pun to MODE_INT if possible.
* combine.c (expand_field_assignment): Don't do bitwise operations on MODE_FLOAT; pun to MODE_INT if possible. From-SVN: r22826
This commit is contained in:
parent
12a27dfc4e
commit
861556b4d9
2 changed files with 23 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
Sun Oct 4 23:58:30 1998 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* combine.c (expand_field_assignment): Don't do bitwise operations
|
||||
on MODE_FLOAT; pun to MODE_INT if possible.
|
||||
|
||||
Sun Oct 4 18:33:24 1998 Jason Merrill <jason@yorick.cygnus.com>
|
||||
scott snyder <snyder@d0sgif.fnal.gov>
|
||||
|
||||
|
|
|
@ -5384,6 +5384,24 @@ expand_field_assignment (x)
|
|||
|
||||
compute_mode = GET_MODE (inner);
|
||||
|
||||
/* Don't attempt bitwise arithmetic on non-integral modes. */
|
||||
if (! INTEGRAL_MODE_P (compute_mode))
|
||||
{
|
||||
enum machine_mode imode;
|
||||
|
||||
/* Something is probably seriously wrong if this matches. */
|
||||
if (! FLOAT_MODE_P (compute_mode))
|
||||
break;
|
||||
|
||||
/* Try to find an integral mode to pun with. */
|
||||
imode = mode_for_size (GET_MODE_BITSIZE (compute_mode), MODE_INT, 0);
|
||||
if (imode == BLKmode)
|
||||
break;
|
||||
|
||||
compute_mode = imode;
|
||||
inner = gen_lowpart_for_combine (imode, inner);
|
||||
}
|
||||
|
||||
/* Compute a mask of LEN bits, if we can do this on the host machine. */
|
||||
if (len < HOST_BITS_PER_WIDE_INT)
|
||||
mask = GEN_INT (((HOST_WIDE_INT) 1 << len) - 1);
|
||||
|
|
Loading…
Add table
Reference in a new issue