This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fix PR18896, addressing split complex args


On Fri, Dec 10, 2004 at 12:27:59AM +1030, Alan Modra wrote:
> +	  if (TREE_ADDRESSABLE (parm))
> +	    {
> +	      rtx in, imem;
> +
> +	      /* split_complex_arg put the imag part in a pseudo.  Move
> +		 it to memory adjacent to the real part.  */
> +	      gcc_assert (MEM_P (real));
> +	      imem = adjust_address_nv (real, VOIDmode, GET_MODE_SIZE (inner));
> +	      in = DECL_INCOMING_RTL (TREE_CHAIN (fnargs));
> +	      if (inner != GET_MODE (in))
> +		in = gen_lowpart_SUBREG (inner, in);
> +	      if (!rtx_equal_p (imem, in))
> +		emit_move_insn (imem, in);

Doesn't this fail for

	void foo (..., complex int x)

for x addressable and "..." such that the real part of x is 
incomming to a register and the imaginary part is incomming
to memory?  I don't see how the real part has enough memory
allocated to it in the local stack frame in that case.


r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]