From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 15D57385841B; Thu, 18 Nov 2021 09:40:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 15D57385841B From: "hubicka at kam dot mff.cuni.cz" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/103168] Value numbering for PRE of pure functions can be improved Date: Thu, 18 Nov 2021 09:40:57 +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: 12.0 X-Bugzilla-Keywords: missed-optimization X-Bugzilla-Severity: normal X-Bugzilla-Who: hubicka at kam dot mff.cuni.cz 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: Thu, 18 Nov 2021 09:40:57 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D103168 --- Comment #6 from hubicka at kam dot mff.cuni.cz --- > bool unknown_memory_access =3D false; > if (summary =3D get_modref_function_summary (stmt, NULL)) > { > /* First search if we can do someting useful. > Like for dse it is easy to precompute in the summary now > and will be happy to implement that. */ > for (auto base_node : summary->loads->bases) > if (base_node->all_bases || unknown_memory_access) > { > unknown_memory_access =3D true; > break; > } > else > for (auto ref_node : base_node->refs) > if (ref_node->all_refs) > { > unknown_memory_access =3D true; > break; > } >=20 > /* Do the walking. */ > if (!unknown_memory_access) > for (auto base_node : summary->loads->bases) > for (auto ref_node : base_node->refs) > if (ref_node->all_refs) > unknown_memory_access =3D true; > else > for (auto access_node : ref_node->accesses) > if (access_node.get_ao_ref (stmt, &ref) > { > ref.base_alias_set =3D base_node->base; > ref.ref_alias_set =3D ref_node->base; ^^^ ref=