egcs 1.0 mips64orion bug
Joel Sherrill
joel@OARcorp.com
Mon Dec 22 12:09:00 GMT 1997
In testing the mips64orion-rtems configuration of egcs 1.0, I ran across
this error message while compiling paranoia -- a public doman FP torture
test.
p3.s: Assembler messages:
p3.s:71: Internal error!
Assertion failure in macro_build at ../../src/gas/config/tc-mips.c line
2365.
Please report this bug.
I reported this error message along with a test case to the binutils
developers and was told that this error message was incorrect in the sense
that it was not a gas internal error but an improper instruction for the
4650. Here are Ian Taylor's commen (form multiple emails)s:
Interesting. Reporting the error in this manner is clearly a bug in
gas.
However, as far as I can tell, the input is not valid for the 4650.
The 4650 has only single precision floating point, which means that it
can not support the s.d instruction for a floating point register. It
doesn't make any sense.
So I think there must be a compiler bug here as well.
I'll fix the bug in the assembler to report the error in a more
coherent fashion.
And later:
It's probably pretty easy to fix. There's probably just a missing
TARGET_DOUBLE_FLOAT somewhere in mips.md or mips.c.
I managed to cut the code down to this:
double One;
int f()
{
One = 1;
}
which (to my surprise) actually trips the bug. :)
Here are the commands I have been using to generate this error:
mips64orion-rtems-gcc -v -mcpu=4650 -S -g p3.c
mips64orion-rtems-as -v -mcpu=4650 p3.s
and get this error:
p3.s:51: Internal error!
Line 51 corresponds to the assignment of "1 to One".
--joel
More information about the Gcc
mailing list