https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79537
--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> --- This void fn1 () { L: goto *&&L; } doesn't ICE because we handle the goto here 11406 case GOTO_EXPR: 11407 /* If the target is not LABEL, then it is a computed jump 11408 and the target needs to be gimplified. */ 11409 if (TREE_CODE (GOTO_DESTINATION (*expr_p)) != LABEL_DECL) 11410 { 11411 ret = gimplify_expr (&GOTO_DESTINATION (*expr_p), pre_p, 11412 NULL, is_gimple_val, fb_rvalue); notice the fb_rvalue, so then we won't reach the switch in Comment 3.