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.