[Bug bootstrap/79814] pass-instances.def:36:14: error: ‘*<unknown>.gcc::pass_manager::pass_warn_unused_result_1’ is used uninitialized in this function
dmalcolm at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Mar 3 23:30:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79814
--- Comment #2 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
The code in question is:
do { ((void)(!(
__null
== pass_warn_unused_result_1) ? fancy_abort ("./pass-instances.def", 36,
__FUNCTION__), 0 : 0)); if ((1) == 1) pass_warn_unused_result_1 =
make_pass_warn_unused_result (m_ctxt); else {
((void)(!(pass_warn_unused_result_1) ? fancy_abort ("./pass-instances.def", 36,
__FUNCTION__), 0 : 0)); pass_warn_unused_result_1 =
pass_warn_unused_result_1->clone (); } p = next_pass_1 (p,
pass_warn_unused_result_1, pass_warn_unused_result_1); } while (0);
i.e. it's complaining about this assertion:
gcc_assert (NULL == PASS ## _ ## NUM); \
within the definition of NEXT_PASS(PASS, NUM) supplied within the pass_manager
ctor: it's asserting that a pointer field within the object is NULL.
pass_manager::operator new ensures that the underlying memory of the pass
manager is zero-initialized, but clearly the warning has no knowledge of this.
Eliminating the assertion fixes the warning, FWIW.
More information about the Gcc-bugs
mailing list