https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104497
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- So the issue here is that gimplification creates <D.1987>: iftmp.0 = inv; goto <D.1989>; <D.1988>: iftmp.0 = src; <D.1989>: _2 = VIEW_CONVERT_EXPR<int[4]>(iftmp.0)[i]; that requires a non-register iftmp.0, but we neither set DECL_NOT_GIMPLE_REG_P nor TREE_ADDRESSABLE on iftmp.0. If we did the iftmp.0 = {inv,src}; stmts also would need different gimplification. Later update_address_taken comes along and "fixes" the missing DECL_NOT_GIMPLE_REG_P but that then makes the assigns invalid IL. We do not support ARRAY_REF (or COMPONENT_REF) on registers.