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).