https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68273
--- Comment #31 from Richard Biener <rguenth at gcc dot gnu.org> --- eipa_sra introduces the remaining SSA name with non-default alignment via #0 make_ssa_name_fn (fn=0x7ffff68bb5e8, var=<parm_decl 0x7ffff69bc700 ISRA.81>, stmt=<gimple_nop 0x7ffff68bcf50>) at /space/rguenther/src/svn/trunk3/gcc/tree-ssanames.c:311 #1 0x0000000000e203d1 in get_or_create_ssa_default_def (fn=0x7ffff68bb5e8, var=<parm_decl 0x7ffff69bc700 ISRA.81>) at /space/rguenther/src/svn/trunk3/gcc/tree-dfa.c:360 #2 0x0000000000e6638e in get_reaching_def ( var=<parm_decl 0x7ffff69bc700 ISRA.81>) at /space/rguenther/src/svn/trunk3/gcc/tree-into-ssa.c:1168 #3 0x0000000000e67855 in maybe_replace_use (use_p=0x7ffff6a17810) at /space/rguenther/src/svn/trunk3/gcc/tree-into-ssa.c:1753 #4 0x0000000000e67eb9 in rewrite_update_stmt ( stmt=<gimple_assign 0x7ffff6966f50>, gsi=...) at /space/rguenther/src/svn/trunk3/gcc/tree-into-ssa.c:1950 #5 0x0000000000e685f4 in rewrite_update_dom_walker::before_dom_children ( this=0x7fffffffd580, bb=<basic_block 0x7ffff6491f08 (2)>) at /space/rguenther/src/svn/trunk3/gcc/tree-into-ssa.c:2130 #6 0x00000000013e0993 in dom_walker::walk (this=0x7fffffffd580, bb=<basic_block 0x7ffff6491f08 (2)>) at /space/rguenther/src/svn/trunk3/gcc/domwalk.c:265 thus SSA rewrite. ISRA.81 is a PARM_DECL built in ipa_modify_formal_parameters from an access present in the IL created by early SRA. Index: gcc/tree-sra.c =================================================================== --- gcc/tree-sra.c (revision 233418) +++ gcc/tree-sra.c (working copy) @@ -933,7 +933,7 @@ create_access (tree expr, gimple *stmt, access = create_access_1 (base, offset, size); access->expr = expr; - access->type = TREE_TYPE (expr); + access->type = TYPE_MAIN_VARIANT (TREE_TYPE (expr)); access->write = write; access->grp_unscalarizable_region = unscalarizable_region; access->stmt = stmt; @@ -1088,7 +1088,7 @@ scalarize_elem (tree base, HOST_WIDE_INT { struct access *access = create_access_1 (base, pos, size); access->expr = ref; - access->type = type; + access->type = TYPE_MAIN_VARIANT (type); access->grp_total_scalarization = 1; access->reverse = reverse; /* Accesses for intraprocedural SRA can have their stmt NULL. */ @@ -1108,7 +1108,7 @@ create_total_scalarization_access (tree access = create_access_1 (var, 0, size); access->expr = var; - access->type = TREE_TYPE (var); + access->type = TYPE_MAIN_VARIANT (TREE_TYPE (var)); access->grp_total_scalarization = 1; } fixes the IL checking below and thus hopefully the testcase. Index: tree-ssa.c =================================================================== --- tree-ssa.c (revision 233418) +++ tree-ssa.c (working copy) @@ -936,6 +936,29 @@ verify_ssa (bool check_modified_stmt, bo name, stmt, virtual_operand_p (name))) goto err; } + + if (TYPE_ALIGN (TREE_TYPE (name)) + != TYPE_ALIGN (TYPE_MAIN_VARIANT (TREE_TYPE (name)))) + { + error ("type with non-default alignment"); + goto err; + } + it would be nice to see this IL checking on trunk and thus results from testing on affected targets - I'll give it a try in x86_64.