Vladimir Marangozov: This fixes the line number in the string
representation of code objects when optimization is on (python -O). It
was always reported as -1 instead of the real lineno.
diff --git a/Python/compile.c b/Python/compile.c
index 5aaf15e..d676b56 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -121,13 +121,11 @@
 {
 	char buf[500];
 	int lineno = -1;
-	unsigned char *p;
 	char *filename = "???";
 	char *name = "???";
 
-	_PyCode_GETCODEPTR(co, &p);
-	if (*p == SET_LINENO)
-		lineno = (p[1] & 0xff) | ((p[2] & 0xff) << 8);
+	if (co->co_firstlineno != 0)
+		lineno = co->co_firstlineno;
 	if (co->co_filename && PyString_Check(co->co_filename))
 		filename = PyString_AsString(co->co_filename);
 	if (co->co_name && PyString_Check(co->co_name))