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: [PATCH] PR target/18916; Function arg passing mem align fixes.


One last change ...

> +      if (MEM_P (src))
> +	/* Use a block move to handle potentially misaligned entry_parm.  */
> +	emit_block_move (dest, src,
> +			 GEN_INT (int_size_in_bytes (data->passed_type)),
> +			 BLOCK_OP_NORMAL);
>        else
> -	emit_move_insn (validize_mem (data->stack_parm),
> -			validize_mem (data->entry_parm));
> +	emit_move_insn (dest, src);
> +    }
> +
> +  if (data->promoted_mode != data->nominal_mode)
> +    {
> +      all->conversion_insns = get_insns ();
> +      end_sequence ();
>      }

Either the block move must be in the conversion_insns sequence,
or you must use BLOCK_OP_NO_LIBCALL.  Otherwise not all argument
registers may be saved.

Unless you can think of a good reason not to, I think I'd prefer
it be in the conversion_insns sequence.  I just feel better about
doing complex things once we've reduced register pressure.


r~


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