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;
}

Reply via email to