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

--- Comment #3 from Rafael Avila de Espindola <rafael at espindo dot la> ---
(In reply to Andrew Pinski from comment #2)
> Some of the time, the uninitialized is due to using the object after the
> lifetime of the object has gone out of scope.  I have not checked if that is
> the case here but I would not be suprised.

Thanks! This may very well be the case.

This reduces further to

struct deleter {
  deleter(deleter &&x) {}
  deleter(deleter &) = default;
};
struct temporary_buffer {
  temporary_buffer(temporary_buffer &) = default;
  char *_buffer = nullptr;
  deleter _deleter;
};
void foo123(temporary_buffer);
struct future_state {
  union any {
    any() {}
    temporary_buffer value;
  } _u;
  void forward_to() { foo123(_u.value); }
};
void then3() {
  future_state _local_state;
  _local_state.forward_to();
}


which has a real uninitialized use. I am looking again at the unreduced test
case to see if that was the original issue.

More context in the warning message would have been awesome! :-)

Reply via email to