cython/cython — pull request #209 by nnemkin (2013-04-06 11:22:17+00:00)
Title: Consistently declare local error reporting variables (lineno, clineno, filename)

Currently ``lineno/clineno/filename`` variables are not declared locally for cpdef wrappers and utility functions, leading to suboptimal code. Compiler has to generate 3 useless global stores (lineno, clineno and filename) for every exception check, that's 25 bytes of junk (on x86).

The patch simply moves lineno declarations so that any function using temporary variables gets them autoamtically (and only if they are actually needed).
Handcoded Cython utilities keep using the global lineno, but their overhead is negligible.

I had observed 4% code size reduction (on x86) as a result of this change, mostly coming from the module init function, which is always heavy on exception checking.