This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PR49888, VTA] don't keep VALUEs bound to modified MEMs
- From: Alexandre Oliva <aoliva at redhat dot com>
- To: Uros Bizjak <ubizjak at gmail dot com>
- Cc: Richard Guenther <richard dot guenther at gmail dot com>, "H.J. Lu" <hjl dot tools at gmail dot com>, Richard Henderson <rth at redhat dot com>, Jakub Jelinek <jakub at redhat dot com>, gcc-patches at gcc dot gnu dot org
- Date: Fri, 06 Jul 2012 08:27:47 -0300
- Subject: Re: [PR49888, VTA] don't keep VALUEs bound to modified MEMs
- References: <orhav7nt6u.fsf@livre.localdomain> <20120523101349.GN16117@tyan-ft48-01.lab.bos.redhat.com> <ory5o1d04j.fsf@livre.localdomain> <4FD7A9BE.4080405@redhat.com> <CAMe9rOpkfzxZir5mFAcb1bPGS=2NROQvwnAJ-eCoif-_-isFnA@mail.gmail.com> <oraa04z05s.fsf@livre.localdomain> <CAMe9rOpYRP-NwH_TwFFcGWS4CEk=O2qENW5+3abgRWNsZTZgXg@mail.gmail.com> <orboke1vyr.fsf@livre.localdomain> <CAFiYyc1Y=5_kPZ4FFfuYZ+ax9mea9DB18N2prm1jDoxwOxbKrg@mail.gmail.com> <or395oyxfi.fsf@livre.localdomain>
On Jun 21, 2012, Alexandre Oliva <aoliva@redhat.com> wrote:
> for gcc/ChangeLog
> from Alexandre Oliva <aoliva@redhat.com>
> PR debug/53671
> PR debug/49888
> * alias.c (memrefs_conflict_p): Improve handling of AND for
> alignment.
There was a thinko in this patch. We can't move the offset by more than
we adjust the size, otherwise we fail to cover part of the required
range, as reported in PR rtl-optimization/53827. This obvious patch
fixes it. Regstrapped on x86_64- and i686-linux-gnu. Uros confirmed it
fixed the bootstrap problem on alpha-linux-gnu. I'm checking this in.
for gcc/ChangeLog
from Alexandre Oilva <aoliva@redhat.com>
PR rtl-optimization/53827
PR debug/53671
PR debug/49888
* alias.c (memrefs_conflict_p): Adjust offset and size by the
same amount for alignment ANDs.
Index: gcc/alias.c
===================================================================
--- gcc/alias.c.orig 2012-07-02 09:04:06.193137799 -0300
+++ gcc/alias.c 2012-07-02 09:04:08.000000000 -0300
@@ -2107,7 +2107,7 @@ memrefs_conflict_p (int xsize, rtx x, in
if (xsize > 0 && sc < 0 && -uc == (uc & -uc))
{
xsize -= sc + 1;
- c -= sc;
+ c -= sc + 1;
return memrefs_conflict_p (xsize, canon_rtx (XEXP (x, 0)),
ysize, y, c);
}
@@ -2119,7 +2119,7 @@ memrefs_conflict_p (int xsize, rtx x, in
if (ysize > 0 && sc < 0 && -uc == (uc & -uc))
{
ysize -= sc + 1;
- c += sc;
+ c += sc + 1;
return memrefs_conflict_p (xsize, x,
ysize, canon_rtx (XEXP (y, 0)), c);
}
--
Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/ FSF Latin America board member
Free Software Evangelist Red Hat Brazil Compiler Engineer