Commit 7cefcade by John David Anglin Committed by John David Anglin

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
parent 3ba43c5f
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> 2007-09-27 Richard Sandiford <rsandifo@nildram.co.uk>
* config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro. * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
...@@ -1776,8 +1776,25 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type, int ssize) ...@@ -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 else if (CONSTANT_P (src) && GET_MODE (dst) != BLKmode
&& XVECLEN (dst, 0) > 1) && XVECLEN (dst, 0) > 1)
tmps[i] = simplify_gen_subreg (mode, src, GET_MODE(dst), bytepos); tmps[i] = simplify_gen_subreg (mode, src, GET_MODE(dst), bytepos);
else if (CONSTANT_P (src) else if (CONSTANT_P (src))
|| (REG_P (src) && GET_MODE (src) == mode)) {
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; tmps[i] = src;
else else
tmps[i] = extract_bit_field (src, bytelen * BITS_PER_UNIT, tmps[i] = extract_bit_field (src, bytelen * BITS_PER_UNIT,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment