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

Reply via email to