This patch fixes PR middle-end/56382 on hppa64-hp-hpux11.11. The
patch prevents moving a complex float by parts if we can't
create pseudos. On a big endian 64-bit target, we need a psuedo to
move a complex float and this fails during reload.
OK for trunk?
Dave
--
John David Anglin dave.ang...@bell.net
2013-07-28 John David Anglin <dang...@gcc.gnu.org>
PR middle-end/56382
* expr.c (emit_move_complex): Only move mode MODE_COMPLEX_FLOAT by
parts if we can create pseudos.
Index: expr.c
===================================================================
--- expr.c (revision 201248)
+++ expr.c (working copy)
@@ -3236,6 +3236,7 @@
/* Move floating point as parts. */
if (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT
+ && can_create_pseudo_p ()
&& optab_handler (mov_optab, GET_MODE_INNER (mode)) != CODE_FOR_nothing)
try_int = false;
/* Not possible if the values are inherently not adjacent. */