From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22732 invoked by alias); 5 Mar 2015 19:47:35 -0000 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 Received: (qmail 22616 invoked by uid 48); 5 Mar 2015 19:47:30 -0000 From: "hubicka at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug ipa/65270] issues with merging memory accesses from different code paths Date: Thu, 05 Mar 2015 19:47:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: ipa X-Bugzilla-Version: 5.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: hubicka at gcc dot gnu.org X-Bugzilla-Status: REOPENED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: rguenth at gcc dot gnu.org X-Bugzilla-Target-Milestone: 5.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: short_desc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-03/txt/msg00652.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65270 Jan Hubicka changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[5 regression] ICF needs to |issues with merging memory |match TYPE attributes on |accesses from different |memory accesses |code paths --- Comment #25 from Jan Hubicka --- I think the ICF wrong code mentioned here should be now all fixed. I did not manage to create a testcase for RESTRICT flag unification, because the RESTRICT flag seems to not be taken into an account when the variable is references thorough pointer to another variable. I think we do have problem with operand_equal_p being used across different contexts in several cases (not only in tree-tail-merge). Perhaps for next stage1 we ought to separate the logic into icf-op class that will have enough flexibility to do the right thing in all cases? (i.e. have valueize hook that can be used by ICF to prove equivalences across classes and in addition to existing operand_equal_p flags it will actually know if it should match memory attributes because the operands come from different code path/broader context). icf-op also should have hash method to produce stable hash so it can be plugged into icf-gimple (that in turn can be plugged into tree-tail-merge).