mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-15 08:04:32 +08:00
re PR middle-end/33436 (Bad constant output with TARGET_ASM_ALIGNED_DI_OP)
PR middle-end/33436 * expr.c (emit_group_load_1): Split constant double when destination length is half source length. From-SVN: r128855
This commit is contained in:
parent
3ba43c5f0c
commit
7cefcade5d
@ -1,3 +1,9 @@
|
||||
2007-09-27 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
PR middle-end/33436
|
||||
* expr.c (emit_group_load_1): Split constant double when destination
|
||||
length is half source length.
|
||||
|
||||
2007-09-27 Richard Sandiford <rsandifo@nildram.co.uk>
|
||||
|
||||
* config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
|
||||
|
21
gcc/expr.c
21
gcc/expr.c
@ -1776,8 +1776,25 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type, int ssize)
|
||||
else if (CONSTANT_P (src) && GET_MODE (dst) != BLKmode
|
||||
&& XVECLEN (dst, 0) > 1)
|
||||
tmps[i] = simplify_gen_subreg (mode, src, GET_MODE(dst), bytepos);
|
||||
else if (CONSTANT_P (src)
|
||||
|| (REG_P (src) && GET_MODE (src) == mode))
|
||||
else if (CONSTANT_P (src))
|
||||
{
|
||||
HOST_WIDE_INT len = (HOST_WIDE_INT) bytelen;
|
||||
|
||||
if (len == ssize)
|
||||
tmps[i] = src;
|
||||
else
|
||||
{
|
||||
rtx first, second;
|
||||
|
||||
gcc_assert (2 * len == ssize);
|
||||
split_double (src, &first, &second);
|
||||
if (i)
|
||||
tmps[i] = second;
|
||||
else
|
||||
tmps[i] = first;
|
||||
}
|
||||
}
|
||||
else if (REG_P (src) && GET_MODE (src) == mode)
|
||||
tmps[i] = src;
|
||||
else
|
||||
tmps[i] = extract_bit_field (src, bytelen * BITS_PER_UNIT,
|
||||
|
Loading…
Reference in New Issue
Block a user