Hi guys, So, I think I'm going to remove sibling call optimization from my gcc tree for now.
I had some problems initially with getting the code generation for the non-delay slot version working with sibling calls, so I decided to try disabling them entirely, for both with and without the delay slot. When I did that, a few of the gcc test cases that failed for the regular delay slot version started passing. So I think the code that was there before wasn't quite right. I know it's an optimization that can be useful under certain cases, but really my goal right now is getting GCC to pass the whole testsuite, and sibling calls add some complications to that. Plus, the mechanisms for generating sibling calls aren't exactly well documented in the GCC internals (there's a long-standing bug report about this) so it's going to be difficult to debug anyways. (And honestly, if you're relying on your C compiler to optimize sibling/tail calls, you're not really coding standard C.) Basically, now, I'm down to 4 failing testcases under gcc.c-torture/execute that I need to solve. There are a handful of others in other places. Once those are done, I can try putting sibling calls back in. Or actually, I think it would be more useful to try to spend my time adding PIC so we can get full-blown linux support working. And making sure C++ is working would be nice, too. But that's all future work :) I just thought I'd drop a note in case someone really has an objection to this. -Pete _______________________________________________ OpenRISC mailing list [email protected] http://lists.openrisc.net/listinfo/openrisc
