From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20409 invoked by alias); 28 May 2007 21:48:13 -0000 Received: (qmail 20391 invoked by uid 48); 28 May 2007 21:48:05 -0000 Date: Mon, 28 May 2007 21:48:00 -0000 Message-ID: <20070528214805.20390.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug c++/32132] bogus warning at -O3 ( 'r' may be used uninitialized in this function ). In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "pinskia at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2007-05/txt/msg02543.txt.bz2 ------- Comment #5 from pinskia at gcc dot gnu dot org 2007-05-28 21:48 ------- The warning is correct you need to check if str had an error after reading the integer. This is not a GCC bug. The IR looks like: : __comp_ctor (&str, s, 8); this.104 = (struct ios_base *) &str.D.25711; __s = this.104 + *(int *) (str.D.25711._vptr.basic_istream + -12); D.40158 = __s->_M_fmtflags; __s->_M_fmtflags = D.40158 & -57 | 16; _M_get_num (&str.D.25711, &__lval); : if (((this.104 + *(int *) (str.D.25711._vptr.basic_istream + -12))->_M_iostate & 5) != 0) goto ; else goto ; : __lval.107 = __lval; r = __lval.107; : __comp_dtor (&str); return r; Which shows for sure r may be used unitialized. Note using libstdc++ does not warn about this because we made >> out of line only which means you will not see the warning (even though the warning is correct). -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32132