This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/25649] [4.2 regression] Bogus "uninitialized" warning
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 24 Jan 2006 18:24:28 -0000
- Subject: [Bug libstdc++/25649] [4.2 regression] Bogus "uninitialized" warning
- References: <bug-25649-2736@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #13 from pinskia at gcc dot gnu dot org 2006-01-24 18:24 -------
Lets look at the final IR:
_M_extract (&cin, &__l);
this.90 = (struct basic_ios<char,std::char_traits<char> > *) &cin;
D.31548 = this.90 + *(long int *) (cin._vptr.basic_istream + -24);
__a.59 = (int) D.31548->D.24021._M_streambuf_state;
if ((__a.59 & 5) == 0) goto <L15>; else goto <L10>;
<L15>:;
__l.93 = __l;
if (__l.93 < -2147483648) goto <L17>; else goto <L14>;
<L14>:;
if (__l.93 > 2147483647) goto <L17>; else goto <L7>;
<L7>:;
x = (int) __l.93;
<L10>:;
if (((int) cin.D.29238.D.24021._M_streambuf_state & 5) != 0) goto <L22>; else
goto <L1>;
<L22>:;
x = -1;
How would the middle-end know that _M_streambuf_state& 5 is set as there is a
call to _M_extract?
There is no way. The bogus part is in the libstdc++ and no where in the
front-ends or the middle-end.
The only way to fix this bogus part is just to disable the warning for "may"
use uninitialized variable which causes more regressions and lets us catch less
errors.
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|c++ |libstdc++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25649