x86->Alpha - some detail and stuff
Hi,
I've had a bit of a dig at this one.
First of all you actually need very little code to trigger it; using the
cc1 I can give it:
void
__throw ()
{
struct eh_context *eh;
void *handler;
long offset;
__builtin_eh_return ((void *)eh, offset, handler);
}
(I just kept taking bits out until the error remained).
with the options:
./cc1 -da dgdebug_e.i -quiet -g -g1 -version -fPIC -fexceptions -o
/tmp/ccSa2Tca.s -O1
and it throws the error:
dgdebug_e.i: In function `__throw':
dgdebug_e.i:9: Internal compiler error:
dgdebug_e.i:9: internal error--insn does not satisfy its constraints:
(insn 40 45 41 (set (reg:DI 23 $23)
(plus:DI (reg:DI 30 $30)
(reg:DI 43 $f11))) 9 {adddi3} (nil)
(nil))
Dropping the -O causes the error to disappear.
The thing which I noticed is the '$f11' - isn't that a floating point
register? How did he get into there?
So with -da I looked at the debug files; .lreg (to me) doesn't seem to
have any reference to floating point in it but .greg does (and I don't
know where the add has come from).
Suggestions on where to look further?
Dave
---------------- Have a happy GNU millennium! ----------------------
/ Dr. David Alan Gilbert | Running GNU/Linux on Alpha,68K| Happy \
\ gro.gilbert @ treblig.org | MIPS,x86,ARM, SPARC and HP-PA | In Hex /
\ _________________________|_____ http://www.treblig.org |_______/
Reply to: