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 |_______/