From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 2850A3858409; Fri, 30 Dec 2022 07:04:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2850A3858409 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1672383899; bh=3Z6ZD/LmA0pDL4wPwQ7/0/PcpXaCyVzajXS1GFZfkX8=; h=From:To:Subject:Date:In-Reply-To:References:From; b=JDIqQVoZkU17zHGinw5lS/BoJttenzfsMuhPbdcCBbm1g+ziOclN3UZFWOjijlzOl 3hOQcCJPB6WrAA6pmQEQRPTe14stkdN56RrrDKRUlijq0gck1GB6jHz6vf44DhV3r0 82PXphLLBe1rOzgrru0NsQGuiX89ZxJHZawR7368= From: "pinskia at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/108253] [13 Regression] ICE in set_nonzero_bits Date: Fri, 30 Dec 2022 07:04:58 +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: 13.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: pinskia at gcc dot gnu.org 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: 13.0 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 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D108253 --- Comment #4 from Andrew Pinski --- Full backtrace: during GIMPLE pass: dom t.cc: In function =E2=80=98void TestBody()=E2=80=99: t.cc:46:1: internal compiler error: in set_nonzero_bits, at tree-ssanames.cc:464 46 | TestBody() { | ^~~~~~~~ 0x8f0a06 set_nonzero_bits(tree_node*, generic_wide_int > const&) /home/apinski/src/upstream-gcc-git/gcc/gcc/tree-ssanames.cc:464 0x14c8f23 maybe_set_nonzero_bits(edge_def*, tree_node*) /home/apinski/src/upstream-gcc-git/gcc/gcc/tree-vrp.cc:2456 0x1330c3b dom_opt_dom_walker::set_global_ranges_from_unreachable_edges(basic_block_de= f*) /home/apinski/src/upstream-gcc-git/gcc/gcc/tree-ssa-dom.cc:1383 0x1332586 dom_opt_dom_walker::before_dom_children(basic_block_def*) /home/apinski/src/upstream-gcc-git/gcc/gcc/tree-ssa-dom.cc:1652 0x1f80d1e dom_walker::walk(basic_block_def*) /home/apinski/src/upstream-gcc-git/gcc/gcc/domwalk.cc:311 0x1333251 execute /home/apinski/src/upstream-gcc-git/gcc/gcc/tree-ssa-dom.cc:939 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See for instructions. That is maybe_set_nonzero_bits forgot to check if the cast was from a point= er type. I suspect (have not even tried this at all; figured this out via looking at= the assert and looking at the current code) will fix this: diff --git a/gcc/tree-vrp.cc b/gcc/tree-vrp.cc index e6c6c5a301d..8068cf2b083 100644 --- a/gcc/tree-vrp.cc +++ b/gcc/tree-vrp.cc @@ -762,6 +762,7 @@ maybe_set_nonzero_bits (edge e, tree var) tree cst; if (stmt =3D=3D NULL + || POINTER_TYPE_P (TREE_TYPE (var)) || gimple_code (stmt) !=3D GIMPLE_COND || gimple_cond_code (stmt) !=3D ((e->flags & EDGE_TRUE_VALUE) ? EQ_EXPR : NE_EXPR)=