https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89765
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- I think the issue is that we gimplify VIEW_CONVERT_EXPR<__int128 unsigned>(<<< Unknown tree: compound_literal_expr V D.2833 = y; >>>) via 12399 case VIEW_CONVERT_EXPR: 12400 if (is_gimple_reg_type (TREE_TYPE (*expr_p)) 12401 && is_gimple_reg_type (TREE_TYPE (TREE_OPERAND (*expr_p, 0)))) 12402 { 12403 ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, 12404 post_p, is_gimple_val, fb_rvalue); (gdb) l 12405 recalculate_side_effects (*expr_p); 12406 break; when in gimplify_expr with fallback == fb_lvalue and gimple_test_f == is_gimple_lvalue. If we fix that with Index: gcc/gimplify.c =================================================================== --- gcc/gimplify.c (revision 270437) +++ gcc/gimplify.c (working copy) @@ -12397,7 +12397,8 @@ gimplify_expr (tree *expr_p, gimple_seq break; case VIEW_CONVERT_EXPR: - if (is_gimple_reg_type (TREE_TYPE (*expr_p)) + if ((fallback & fb_rvalue) + && is_gimple_reg_type (TREE_TYPE (*expr_p)) && is_gimple_reg_type (TREE_TYPE (TREE_OPERAND (*expr_p, 0)))) { ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, then we gimplify to the correct VIEW_CONVERT_EXPR<__int128 unsigned>(D.2833) = x; and yes, we could move the VIEW_CONVERT_EXPR to the RHS as a trick to make D.2833 SSA rewritable in update-address-taken. Have to think whether requiring fallback & fb_rvalue is to be used or if fallback != fb_lvalue is better. I guess the latter.