https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111425

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Reduced testcase:

enum { REFCOUNT_ADD_NOT_ZERO_OVF } refcount_warn_saturate();
int refcount_inc_not_zero_old, fib_info_num_path___trans_tmp_11,
    rtnh_ok_remaining, fib_create_info_nexthop_nh_0, fib_create_info_fi;
struct rtnexthop {
  short rtnh_len;
} fib_count_nexthops_rtnh;
struct nexthop *nh;
void atomic_read(int *v) { *(volatile typeof(_Generic(0, default : 0)) *)v; }
typedef struct {
  int refs;
} refcount_t;
void refcount_inc_not_zero(refcount_t *r) {
  _Bool __trans_tmp_13;
  atomic_read(&r->refs);
  while (!__trans_tmp_13)
    if (__builtin_expect(refcount_inc_not_zero_old, 0))
      refcount_warn_saturate();
}
struct nexthop {
  refcount_t refcnt;
};
int fib_info_num_path() {
  if (__builtin_expect(!nh, 0))
    return fib_info_num_path___trans_tmp_11;
}
int rtnh_ok(struct rtnexthop *rtnh) {
  return rtnh_ok_remaining && rtnh->rtnh_len <= rtnh_ok_remaining;
}
void fib_create_info() {
  struct rtnexthop __trans_tmp_12;
  while (rtnh_ok(&fib_count_nexthops_rtnh))
    fib_count_nexthops_rtnh = __trans_tmp_12;
  if (nh)
    refcount_inc_not_zero(&nh->refcnt);
  for (; fib_info_num_path();)
    fib_create_info_nexthop_nh_0 = fib_create_info_fi;
}

Reply via email to