------- Comment #11 from hjl dot tools at gmail dot com 2010-09-16 13:21 ------- This code:
if (TREE_CODE (srcvar) == ADDR_EXPR && var_decl_component_p (TREE_OPERAND (srcvar, 0)) && tree_int_cst_equal (TYPE_SIZE_UNIT (srctype), len) && (!STRICT_ALIGNMENT || !destvar || src_align >= TYPE_ALIGN (desttype))) srcvar = fold_build2 (MEM_REF, destvar ? desttype : srctype, srcvar, off0); does float d[4]; __m128 *p = (__m128 *) &d; and treats p as properly aligned. I don't see how it can ever work with SSE. It has nothing to do with stack alignment. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45678