https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106663
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Created attachment 53468 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53468&action=edit patch restoring backward threader functionality The attached restores functionality in the backwards threader but as said it gives up in find_taken_edge_goto doing m_solver->range_of_expr (r, dest, m_last_stmt); tree addr; if (!r.singleton_p (&addr) || (TREE_CODE (addr) != ADDR_EXPR && TREE_CODE (TREE_OPERAND (addr, 0)) != LABEL_DECL)) return NULL; since the range we get is non-null, not &label