This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix issue with RTL alias-export and promoted subregs
On Mon, 28 Sep 2009, Richard Guenther wrote:
> On Mon, 28 Sep 2009, Richard Guenther wrote:
>
> > On Mon, 28 Sep 2009, Richard Guenther wrote:
> >
> > > On Mon, 28 Sep 2009, Uros Bizjak wrote:
> > >
> > > > Hello!
> > > >
> > > > > It happens that with promoted subregs we have to deal with
> > > > > MEMs like [9 p_initial+-4 S8 A64] which access 8 bytes starting
> > > > > 4 bytes before a decl with 4 bytes in size. Not very nice.
> > > > >
> > > > > Fixed like the following. Bootstrapped and tested on
> > > > > x86_64-unknown-linux-gnu and ppc64 (by Pat).
> > > > >
> > > > > Applied to trunk.
> > > > >
> > > > > Richard.
> > > > >
> > > > > 2009-09-23 Richard Guenther<rguenther@suse.de>
> > > > >
> > > > > * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
> > > > > produced for bigendian targets with promoted subregs.
> > > > >
> > > >
> > > > This patch breaks a couple of testcases on alpha-linux-gnu [1]:
> > > >
> > > > FAIL: gcc.c-torture/execute/20030408-1.c compilation, -O3
> > > > -fomit-frame-pointer (internal compiler error)
> > > > UNRESOLVED: gcc.c-torture/execute/20030408-1.c execution, -O3
> > > > -fomit-frame-pointer
> > > > FAIL: gcc.c-torture/execute/20030408-1.c compilation, -O3 -g (internal
> > > > compiler error)
> > > > UNRESOLVED: gcc.c-torture/execute/20030408-1.c execution, -O3 -g
> > > > FAIL: gcc.c-torture/execute/pr27285.c compilation, -O1 (internal compiler
> > > > error)
> > > > UNRESOLVED: gcc.c-torture/execute/pr27285.c execution, -O1
> > > > FAIL: gcc.c-torture/execute/pr27285.c compilation, -O2 (internal compiler
> > > > error)
> > > > UNRESOLVED: gcc.c-torture/execute/pr27285.c execution, -O2
> > > > FAIL: gcc.c-torture/execute/pr27285.c compilation, -Os (internal compiler
> > > > error)
> > > > UNRESOLVED: gcc.c-torture/execute/pr27285.c execution, -Os
> > > >
> > > >
> > > > This failure can be reproduced by a cross (from x86_64-pc-linux-gnu):
> > > >
> > > > ~/gcc-build-alpha/gcc/cc1 -O2 -quiet pr27285.c
> > > > pr27285.c: In function âmainâ:
> > > > pr27285.c:46:1: internal compiler error: in ao_ref_from_mem, at alias.c:321
> > > > Please submit a full bug report,
> > > > with preprocessed source if appropriate.
> > > > See <http://gcc.gnu.org/bugs.html> for instructions.
> > > >
> > > > [1] http://gcc.gnu.org/ml/gcc-testresults/2009-09/msg02383.html
> > >
> > > There's some weird things going on with stack slot allocations.
> > > x is allocated from [virtual-stack-vars, virtual-stack-vars + 18]
> > > and y is allocated from [virtual-stack-vars + 19, virtual-stack-vars + 34]
> > > for some reason (so &y - 3 is DImode aligned, as is &x)!?
> >
> > Ok, it's obviously densely allocated on the stack.
> >
> > Hmm. I guess we need to punt more here, like with the following
> > (untested). In principle the MEM_EXPR doesn't buy us extra
> > disambiguations here so we could as well avoid emitting it.
> >
> > So, I'm testing the following.
>
> Bootstrapped and tested on x86_64-unknown-linux-gnu, I'll apply it
> tomorrow.
Committed as r152278.
Richard.