https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79256
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- (gdb) p debug_tree (exp) <mem_ref 0x7ffff6a4d230 type <real_type 0x7ffff6a31e70 num_t DF size <integer_cst 0x7ffff68a2d38 constant 64> unit size <integer_cst 0x7ffff68a2d50 constant 8> align 64 symtab 0 alias set -1 canonical type 0x7ffff68c2540 precision 64 context <translation_unit_decl 0x7ffff6a398e8 /space/rguenther/src/svn/gcc-7-branch/gcc/testsuite/gcc.dg/vect/pr25413a.c> pointer_to_this <pointer_type 0x7ffff6a41498>> so the MEM is marked aligned but somehow it is not in the end. (gdb) p get_mode_alignment (DFmode) $2 = 64 Hmm, so it's only 32bit aligned in structures but we use double_type_node everywhere? That makes all pointer accesses generate wrong MEM_REFs...