http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48493
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Known to work| |4.8.0 Summary|[4.6/4.7/4.8 Regression] |[4.6/4.7 Regression] ice in |ice in |expand_expr_addr_expr_1 |expand_expr_addr_expr_1 |with complex types and |with complex types and |mem_ref |mem_ref | --- Comment #11 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-05-30 12:42:28 UTC --- Can somebody test Index: gcc/expr.c =================================================================== --- gcc/expr.c (revision 188009) +++ gcc/expr.c (working copy) @@ -4593,6 +4593,7 @@ expand_assignment (tree to, tree from, b if ((TREE_CODE (to) == MEM_REF || TREE_CODE (to) == TARGET_MEM_REF) && mode != BLKmode + && !mem_ref_refers_to_non_mem_p (to) && ((align = get_object_or_type_alignment (to)) < GET_MODE_ALIGNMENT (mode)) && ((icode = optab_handler (movmisalign_optab, mode)) on arm? That's pre-approved if it passes bootstrap & regtest (it works on the testcase with a cross and is an obvious partial backport from trunk r185336). Thus, the testcase works for me on trunk.