Do not use TYPE_CANONICAL in useless_type_conversion
Richard Biener
rguenther@suse.de
Tue Oct 13 08:39:00 GMT 2015
On Tue, 13 Oct 2015, Alexandre Oliva wrote:
> On Oct 9, 2015, Jan Hubicka <hubicka@ucw.cz> wrote:
>
> > ... we initialize mode to be non-VOIDmode only if the field is not bitfield. I missed
> > the flag while looking at the dump. Indeed the DECL_MODE if FIELD_DECL is SImode,
> > but it is ignored.
>
> > Hmm, it seems that for CALL_EXPR the register is supposed to be non-BLKmode
> > already. So I guess only what we need to do is to consider bifields when
> > TEMP is blk mode and then we want to convert? what about this?
>
> How about using in store_bit_field the same logic you added to
> store_expr_with_bounds to get input MEMs to have a compatible mode?
> This patch was regstrapped on i686-linux-gnu and x86_64-linux-gnu. Ok
> to install?
Ok.
Thanks,
Richard.
> support BLKmode inputs for store_bit_field
>
> From: Alexandre Oliva <aoliva@redhat.com>
>
> Revision 228586 changed useless_type_conversion_p and added mode
> changes for MEM:BLKmode inputs in store_expr_with_bounds, but it
> missed store_bit_field. This caused ada/rts/s-regpat.ads to fail
> compilation on x86_64-linux-gnu.
>
> for gcc/ChangeLog
>
> * expmed.c (store_bit_field_1): Adjust mode of BLKmode inputs.
> ---
> gcc/expmed.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/gcc/expmed.c b/gcc/expmed.c
> index 93cf508..69ea511 100644
> --- a/gcc/expmed.c
> +++ b/gcc/expmed.c
> @@ -757,6 +757,14 @@ store_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
> }
> }
>
> + /* We allow move between structures of same size but different mode.
> + If source is in memory and the mode differs, simply change the memory. */
> + if (GET_MODE (value) == BLKmode && GET_MODE (op0) != BLKmode)
> + {
> + gcc_assert (MEM_P (value));
> + value = adjust_address_nv (value, GET_MODE (op0), 0);
> + }
> +
> /* Storing an lsb-aligned field in a register
> can be done with a movstrict instruction. */
>
>
>
>
--
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)
More information about the Gcc-patches
mailing list