From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 89F133858D39; Thu, 3 Mar 2022 14:19:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 89F133858D39 From: "dmalcolm at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug analyzer/104680] identical inner condition not detected Date: Thu, 03 Mar 2022 14:19:33 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: analyzer X-Bugzilla-Version: 12.0 X-Bugzilla-Keywords: diagnostic X-Bugzilla-Severity: enhancement X-Bugzilla-Who: dmalcolm at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: dmalcolm 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: Thu, 03 Mar 2022 14:19:33 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D104680 --- Comment #4 from David Malcolm --- > trunk.git/gcc/d/expr.cc:689:17: warning: Identical inner 'if' condition i= s always true. [identicalInnerCondition] In 'void visit (CatExp *e)': 682 =E2=94=82 if (e->e1->op =3D=3D EXP::concatenate) 683 =E2=94=82 { 684 =E2=94=82 /* Flatten multiple concatenations to an array. 685 =E2=94=82 So the expression ((a ~ b) ~ c) becomes [a, b, c] = */ 686 =E2=94=82 int ndims =3D 2; 687 =E2=94=82=20 688 =E2=94=82 for (Expression *ex =3D e->e1; ex->op =3D=3D EXP::conc= atenate;) 689 =E2=94=82 { 690 =E2=94=82 if (ex->op =3D=3D EXP::concatenate) 691 =E2=94=82 { 692 =E2=94=82 ex =3D ex->isCatExp ()->e1; 693 =E2=94=82 ndims++; 694 =E2=94=82 } 695 =E2=94=82 } Looks like the ex->op =3D=3D EXP::concatenate in line 690 is indeed checked= by the loop guard at line 688, so this code does look suspicious to me.=