This is the mail archive of the gcc@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: mips gcc -O1: Address exception error on store doubleword


Hi,

I'll try to come up with a short test.

I have narrowed it a bit more. The PVAR structure contains a long long
variable ( with a sizeof 8 and an alignof 8 for my architecture). If I
take out the long long variable, the compiler uses sdl instructions
instead of sd and the exception doesn't happen.

Also, if I do

static void varcopy(void *pvar1, void *pvar2)

the compiler uses sdl and avoids the crash.

I am compiling for n32 ABI, so the register size is 64bits.

Any ideas?

On 8/9/07, David Daney <ddaney@avtrex.com> wrote:
> Alex Gonzalez wrote:
> > Hi,
> >
> > I am seeing an address error exception caused by the gcc optimizer -O1.
> >
> > I have narrowed it down to the following function:
> >
> > static void varcopy(PVAR *pvar1, PVAR *pvar2) {
> >     memcpy(pvar1,pvar2,sizeof(PVAR));
> > }
> >
> > Being the sizeof(PVAR) 160 bytes.
> >
> > The exception is caused on an sd instruction when the input is not
> > aligned on a doubleword boundary.
> >
> > I was under the assumption that the compiler made sure that it doesn't
> > store a doubleword that is not aligned on a doubleword boundary. Is
> > this a bug in the optimizer?
> >
> > I am using a gcc mips64 cross-compiler,
> >
> > mips64-linux-gnu-gcc (GCC) 3.3-mips64linux-031001
> >
> > Has anyone experienced this problem before?
> >
> In order to investigate we would need a self contained test case (i.e.
> the definition of PVAR must be included).  Also it would be nice if you
> could try it on a current version of GCC (4.2.1 perhaps).
>
> David Daney
>


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