This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]