From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 562BA3858414; Tue, 30 Nov 2021 16:47:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 562BA3858414 From: "eggert at cs dot ucla.edu" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/101912] -Wmaybe-uninitialized false alarm in tzdb localtime.c Date: Tue, 30 Nov 2021 16:47:54 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 11.2.1 X-Bugzilla-Keywords: diagnostic X-Bugzilla-Severity: normal X-Bugzilla-Who: eggert at cs dot ucla.edu X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Nov 2021 16:47:54 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D101912 --- Comment #4 from eggert at cs dot ucla.edu --- (In reply to Aldy Hernandez from comment #3) > > && !(leapcnt =3D=3D 0 > > || (prevcorr < corr > > ? corr =3D=3D prevcorr + 1 > > : (corr =3D=3D prevcorr > > || corr =3D=3D prevcorr - 1))))) > >=20 >=20 > I guess the question is whether language rules allow us to read prevcorr > when leapcnt=3D=3D 0? The C language rules do not allow that. When leapcnt is zero, behavior must= be as if the prevcorr expression is not evaluated. Although the compiler can generate machine code that evaluates prevcorr at = the machine level (so long as the observable behavior is the same, which is the case as prevcorr is not volatile and no untoward behavior can result from evaluating the prevcorr expression), it's incorrect if the compiler warns t= he programmer that prevcorr is used uninitialized.=