public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug regression/89733] [8/9/10/11 Regression] -Wuninitialized false positive with unclear message pointing to a class name
[not found] <bug-89733-4@http.gcc.gnu.org/bugzilla/>
@ 2021-04-16 21:03 ` msebor at gcc dot gnu.org
0 siblings, 0 replies; only message in thread
From: msebor at gcc dot gnu.org @ 2021-04-16 21:03 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89733
Martin Sebor <msebor at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |msebor at gcc dot gnu.org
Resolution|--- |INVALID
--- Comment #12 from Martin Sebor <msebor at gcc dot gnu.org> ---
Confirming the unconditional uninitialized read in the IL for the test case in
attachment 4599 and GCC correctly diagnoses it:
;; Function
boost::spirit::lex::lexertl::iterator<boost::spirit::lex::lexertl::functor<boost::spirit::lex::lexertl::token<const
char*, boost::mpl::vector<int> >, boost::spirit::lex::lexertl::detail::data,
const char*, mpl_::bool_<true>, mpl_::bool_<true> >
>::iterator<boost::spirit::lex::lexertl::lexer<boost::spirit::lex::lexertl::token<const
char*, boost::mpl::vector<int> >, const char*,
boost::spirit::lex::lexertl::functor<boost::spirit::lex::lexertl::token<const
char*, boost::mpl::vector<int> >, boost::spirit::lex::lexertl::detail::data,
const char*, mpl_::bool_<true>, mpl_::bool_<true> > >::iterator_data_type>
(_ZN5boost6spirit3lex7lexertl8iteratorINS2_7functorINS2_5tokenIPKcNS_3mpl6vectorIiN4mpl_2naESB_SB_SB_SB_SB_SB_SB_SB_SB_SB_SB_SB_SB_SB_SB_SB_SB_SB_EENSA_5bool_ILb1EEEmEENS2_6detail4dataES7_SE_SE_EEEC2INS2_5lexerISF_S7_SI_E18iterator_data_typeEEERKT_RS7_RKS7_S7_,
funcdef_no=13218, decl_uid=464032, cgraph_uid=4528, symbol_order=4816)
void
boost::spirit::lex::lexertl::iterator<boost::spirit::lex::lexertl::functor<boost::spirit::lex::lexertl::token<const
char*, boost::mpl::vector<int> >, boost::spirit::lex::lexertl::detail::data,
const char*, mpl_::bool_<true>, mpl_::bool_<true> >
>::iterator<boost::spirit::lex::lexertl::lexer<boost::spirit::lex::lexertl::token<const
char*, boost::mpl::vector<int> >, const char*,
boost::spirit::lex::lexertl::functor<boost::spirit::lex::lexertl::token<const
char*, boost::mpl::vector<int> >, boost::spirit::lex::lexertl::detail::data,
const char*, mpl_::bool_<true>, mpl_::bool_<true> > >::iterator_data_type>
(struct iterator * const this, const struct iterator_data_type & iterdata_,
const char * & first, const char * const & last, const char_type * state)
{
...
<bb 2> [local count: 1073741824]:
MEM[(struct __as_base &)&D.470882] ={v} {CLOBBER};
MEM[(struct data *)&D.470882] ={v} {CLOBBER};
MEM[(struct __as_base &)&D.470882] ={v} {CLOBBER};
MEM[(struct data *)&D.470882].first_ = first_6(D);
_16 = MEM[(const char * const &)last_7(D)];
MEM[(struct data *)&D.470882].last_ = _16;
_17 = *iterdata__5(D).state_machine_;
MEM[(struct data *)&D.470882].state_machine_ = _17;
_18 = *iterdata__5(D).rules_;
MEM[(struct data *)&D.470882].rules_ = _18;
_19 = MEM[(const struct internals &)_17]._seen_BOL_assertion;
MEM[(struct data *)&D.470882].bol_ = _19;
MEM[(struct data *)&D.470882].state_ = 0;
_20 = *iterdata__5(D).actions_;
MEM[(struct data *)&D.470882].actions_ = _20;
MEM[(struct data *)&D.470882].hold_ = 0B;
MEM[(struct variant *)&D.470882 + 72B] ={v} {CLOBBER};
MEM[(struct aligned_storage *)&D.470882 + 80B] ={v} {CLOBBER};
MEM <const char *> [(struct value_T *)&D.470882 + 80B] = _16;
MEM <const char *> [(struct value_T *)&D.470882 + 88B] = _16;
MEM[(struct variant *)&D.470882 + 72B].which_ = 0;
MEM[(struct data *)&D.470882].has_value_ = 0;
MEM[(struct data *)&D.470882].has_hold_ = 0;
MEM[(struct pair *)&D.470880] ={v} {CLOBBER};
MEM[(struct __as_base &)&D.470880 + 8] ={v} {CLOBBER};
MEM[(struct data *)&D.470880 + 8B].D.426958 = MEM[(const struct data
&)&D.470882].D.426958;
MEM[(struct data *)&D.470880 + 8B].actions_ = _20;
MEM[(struct data *)&D.470880 + 8B].hold_ = 0B;
_57 = MEM[(const struct data &)&D.470882].end_; <<< -Wuninitialized
MEM[(struct data *)&D.470880 + 8B].end_ = _57;
Likewise, the uninitialized read in the small test case in comment #7 is
diagnosed:
In copy constructor ‘X::X(const X&)’,
inlined from ‘Y<T>::Y(T) [with T = X]’ at pr89733-c7.C:4:12,
inlined from ‘void foo()’ at pr89733-c7.C:18:3:
pr89733-c7.C:11:7: warning: ‘<unnamed>.X::end_’ is used uninitialized
[-Wuninitialized]
11 | class X {
| ^
pr89733-c7.C: In function ‘void foo()’:
pr89733-c7.C:18:11: note: ‘<anonymous>’ declared here
18 | Y<X>(X(0));
| ^
So resolving as invalid as per comment 6.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-04-16 21:03 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <bug-89733-4@http.gcc.gnu.org/bugzilla/>
2021-04-16 21:03 ` [Bug regression/89733] [8/9/10/11 Regression] -Wuninitialized false positive with unclear message pointing to a class name msebor at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).