mips gcc -O1: Address exception error on store doubleword
Andrew Haley
aph-gcc@littlepinkcloud.COM
Thu Aug 9 16:18:00 GMT 2007
[redirected to gcc-help]
Alex Gonzalez writes:
> 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?
I'm guessing you're doing something illegal, like casting an unaligned
pointer to a PVAR *. It would help if you could post a short test
case (complete, runnable) that shows the problem.
Andrew.
More information about the Gcc-help
mailing list