[Bug middle-end/98373] [11 Repression] Bogus error: ‘symbuf’ may be used uninitialized at -O0
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Dec 18 21:55:04 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98373
H.J. Lu <hjl.tools at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |NEW
--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> ---
[hjl@gnu-cfl-2 gold]$ cat /tmp/foo.cc
template<int size>
struct Sym_data;
template<>
struct Sym_data<32>
{
unsigned char st_info;
unsigned char st_other;
};
template<>
struct Sym_data<64>
{
unsigned char st_info;
unsigned char st_other;
};
template<int size, bool big_endian>
class Sym
{
public:
Sym(const unsigned char* p)
: p_(reinterpret_cast<const Sym_data<size>*>(p))
{ }
private:
const Sym_data<size>* p_;
};
template<int size, bool big_endian>
class Sized_relobj_incr
{
private:
void do_add_symbols();
Sym<size, big_endian> *symbols_;
};
template<int size, bool big_endian>
Sym<size, big_endian> *
foo(Sym<size, big_endian> *);
template<int size, bool big_endian>
void
Sized_relobj_incr<size, big_endian>::do_add_symbols()
{
unsigned char symbuf[100];
Sym<size, big_endian> sym(symbuf);
Sym<size, big_endian>* res = foo(&sym);
this->symbols_ = res;
}
template
class Sized_relobj_incr<32, false>;
[hjl@gnu-cfl-2 gold]$ /usr/gcc-11.0.0-x32/bin/g++ -Wall -S /tmp/foo.cc
/tmp/foo.cc: In member function ‘void Sized_relobj_incr<size,
big_endian>::do_add_symbols() [with int size = 32; bool big_endian = false]’:
/tmp/foo.cc:47:25: warning: ‘symbuf’ may be used uninitialized
[-Wmaybe-uninitialized]
47 | Sym<size, big_endian> sym(symbuf);
| ^~~
/tmp/foo.cc:22:3: note: by argument 2 of type ‘const unsigned char*’ to
‘Sym<size, big_endian>::Sym(const unsigned char*) [with int size = 32; bool
big_endian = false]’ declared here
22 | Sym(const unsigned char* p)
| ^~~
/tmp/foo.cc:46:17: note: ‘symbuf’ declared here
46 | unsigned char symbuf[100];
| ^~~~~~
[hjl@gnu-cfl-2 gold]$
More information about the Gcc-bugs
mailing list