https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99421
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- Confirmed, reduced test-case: $ cat predict.ii typedef struct { int *use } ssa_use_operand_t; enum { GIMPLE_PHI, GIMPLE_UNARY_RHS, GIMPLE_SINGLE_RHS } gimple_num_ops; gimple_call_fndecl_addr_0_0, gimple_call_num_args, gimple_phi_num_args, gimple_phi_arg_imm_use_ptr_gs_0_0, expr_expected_value_1___trans_tmp_13, expr_expected_value_1___trans_tmp_11, expr_expected_value_1_def_0_0, expr_expected_value_1_new_val, expr_expected_value_1_val_0_1, expr_expected_value_1_code, expr_expected_value_1_op1, expr_expected_value_1___trans_tmp_4, expr_expected_value_1___trans_tmp_2, expr_expected_value_1_decl_0_0, expr_expected_value_1_val; *expr_expected_value_1_op0; get_gimple_rhs_class() {} gimple_call_fndecl() { addr(); if (gimple_call_fndecl_addr_0_0) return addr; return 0; } bb_estimate_probability_locally_bb() { # 2 "predict.c" } static *expr_expected_value_1() { if (get_gimple_rhs_class == GIMPLE_SINGLE_RHS) { if (expr_expected_value_1_op0) return expr_expected_value_1_op0; if (expr_expected_value_1_code) return 0; if (bitmap_bit_p()) return 0; bitmap_set_bit(); if (expr_expected_value_1_def_0_0) { int n = gimple_phi_num_args, val; for (; n;) { gimple_phi_arg_imm_use_ptr_gs_0_0 ? fancy_abort() : 0; ssa_use_operand_t *use; if (use->use == 0) continue; expr_expected_value_1(); if (expr_expected_value_1_new_val) return 0; if (!val) ; else if (operand_equal_p()) return 0; } return expr_expected_value_1_new_val; } if (expr_expected_value_1___trans_tmp_11) { if (gimple_op()) return 0; gimple_op(); gimple_assign_rhs1(); gimple_assign_rhs_code(); if (gimple_num_ops) gimple_op(); return expr_expected_value_1(); } if (expr_expected_value_1___trans_tmp_13) { int decl = gimple_call_fndecl(); if (!decl) return 0; if (expr_expected_value_1_decl_0_0) { if (gimple_call_num_args) return 0; gimple_call_arg(); if (expr_expected_value_1_val_0_1) return &expr_expected_value_1_val; return gimple_call_arg(); } } return 0; } if (get_gimple_rhs_class()) { int *res; expr_expected_value_1(); if (expr_expected_value_1_op0) return 0; expr_expected_value_1(); if (expr_expected_value_1_op1) return 0; fold_build2_stat_loc(); if (expr_expected_value_1___trans_tmp_2) return res; return 0; } if (get_gimple_rhs_class == GIMPLE_UNARY_RHS) { int *res; expr_expected_value_1(); if (expr_expected_value_1_op0) return 0; fold_build1_stat_loc(); if (expr_expected_value_1___trans_tmp_4) return res; return 0; } return 0; }