From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 120446 invoked by alias); 5 Mar 2015 00:42:57 -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 114601 invoked by uid 48); 5 Mar 2015 00:42:52 -0000 From: "hubicka at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug ipa/65270] [5 regression] ICF needs to match TYPE attributes on memory accesses Date: Thu, 05 Mar 2015 00:42: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: 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/msg00550.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65270 --- Comment #19 from Jan Hubicka --- I tried to construct a testcase for __restrict__ case: int var; const int *varptr=&var; const int *__restrict__ varptr2=&var; int *__restrict__ varptr3 = &var; int *__restrict__ varptr4 = &var; int * return_valptr(int i) { return varptr[i]; } int * __restrict__ return_valptr2(int i) { return varptr2[i]; } int testrestrict () { int *ptr = return_valptr (0); *ptr = 0; *varptr3 = 1; return *ptr; } int testrestrict2 () { int *ptr = return_valptr2 (0); *ptr = 0; *varptr3 = 1; return *ptr; } int testrestrict4 () { *varptr4 = 0; *varptr3 = 1; return *varptr4; } Here I would like restrict2 to return uncondtional 0, because ptr is taken from a restrict pointer in a global var. For whatever reason this optimization is not happening (it happens in testrestrict4). So perhaps we are safe to completely ignore restircts on vars, because we never get the flag in through folding.