https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114676
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |iii at gcc dot gnu.org, | |jakub at gcc dot gnu.org, | |krebbel at gcc dot gnu.org --- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #1) > /* Build a vector type with the alignment of the target > location in order to enable correct alignment hints to be > generated for vst. */ > tree mem_type = build_aligned_type (TREE_TYPE((*arglist)[0]), > TYPE_ALIGN (TREE_TYPE (TREE_TYPE > ((*arglist)[2])))); > return build2 (MODIFY_EXPR, mem_type, > build1 (INDIRECT_REF, mem_type, > fold_build_pointer_plus ((*arglist)[2], > (*arglist)[1])), > (*arglist)[0]); > > > Does -fno-strict-aliasing help? I wonder if the above (which is > S390_OVERLOADED_BUILTIN_s390_vec_xst from s390_expand_overloaded_builtin) > should be have an may_alias variant . Building MEM_REF is one option, another one is to cast the operand of INDIRECT_REF to build_pointer_type (mem_type, VOIDmode, true) type.