https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63472
--- Comment #4 from ak at gcc dot gnu.org --- Reduced test cases for all three crashes. I suspect multiple have a similar root cause (except perhaps for the expand_expr_addr_expr_1 one) It looks like the transaction code messes up cfgloops. copy_bbs: (illegal code due to goto into transaction?) g_56[]; fn1() { int *p_79; if (g_56[7]) __transaction_atomic { lbl_196: *p_79 = 1; } else goto lbl_196; } expand_expr_addr_expr_1: struct { unsigned : 7; signed f6 : 4 } g_35; safe_rshift_func_uint16_t_u_s() {} func_28() { __transaction_atomic { safe_rshift_func_uint16_t_u_s(g_35.f6); } } copy_loops: func_65() { __transaction_atomic { for (;;) func_65(); } }