diff mbox

: Fix PR middle-end/56382 -- Only move MODE_COMPLEX_FLOAT by parts if we can create pseudos

Message ID BLU0-SMTP2690D4975D21F5B1DC549397540@phx.gbl
State New
Headers show

Commit Message

John David Anglin July 28, 2013, 4:17 p.m. UTC
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.anglin@bell.net
2013-07-28  John David Anglin  <danglin@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.

Comments

John David Anglin Aug. 23, 2013, 12:47 a.m. UTC | #1
Ping.

On 28-Jul-13, at 12:17 PM, John David Anglin wrote:

> 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.anglin@bell.net
>
>
> <expr.c.d.txt>

--
John David Anglin	dave.anglin@bell.net
diff mbox

Patch

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.  */