-Fix: the original code contains statements which trigger a warning. So no longer consider warnings errors, and wait till someone fixes the (legit) warnings
-Fix: revert our custom patches to avoid stack overflow, and depend on GCC's tail call optimization. It solves all the problems at once, and gives us the time to really fix the issues in a correct way when we get there (tnx to nsz)