CFLAGS+= -g -O
LDFLAGS+= -g
else
- CFLAGS+= -s -O2 -fomit-frame-pointer
+ CFLAGS+= -s -O3 -fomit-frame-pointer
LDFLAGS+= -s
endif
CFLAGS+= $(PY_DEF)
@echo DATA MULTIPLE NONSHARED >>$@
@echo EXPORTS >>$@
$(EXPLIB) -u $(PYTHON.LIB) |\
- sed -e "/ .init.*/s/^ /; /" \
- -e "/ .pcre_.*/s/^ /; /" \
- -e "/ .array_methods/s/^ /; /" \
- -e "/ .fast_save_leave/s/^ /; /" \
- -e "/ .dlopen/s/^ /; /" \
- -e "/ .dlsym/s/^ /; /" \
- -e "/ .dlclose/s/^ /; /" \
- -e "/ .dlerror/s/^ /; /" \
- -e "/ .cycle_type/s/^ /; /" \
- -e "/ .dropwhile_type/s/^ /; /" \
- -e "/ .takewhile_type/s/^ /; /" \
- -e "/ .islice_type/s/^ /; /" \
- -e "/ .starmap_type/s/^ /; /" \
- -e "/ .imap_type/s/^ /; /" \
- -e "/ .chain_type/s/^ /; /" \
- -e "/ .ifilter_type/s/^ /; /" \
- -e "/ .ifilterfalse_type/s/^ /; /" \
- -e "/ .count_type/s/^ /; /" \
- -e "/ .izip_type/s/^ /; /" \
- -e "/ .repeat_type/s/^ /; /" \
- -e "/ ._Py_re_.*/s/^ /; /" \
- -e "/ ._Py_MD5.*/s/^ /; /" >>$@
+ sed -e "/^ .init.*/s/^ /; /" \
+ -e "/^ .pcre_.*/s/^ /; /" \
+ -e "/^ .array_methods/s/^ /; /" \
+ -e "/^ .fast_save_leave/s/^ /; /" \
+ -e "/^ .dlopen/s/^ /; /" \
+ -e "/^ .dlsym/s/^ /; /" \
+ -e "/^ .dlclose/s/^ /; /" \
+ -e "/^ .dlerror/s/^ /; /" \
+ -e "/^ ._Py_re_.*/s/^ /; /" \
+ -e "/^ ._Py_MD5.*/s/^ /; /" >>$@
$(PYTHON.IMPLIB): $(PYTHON.DEF)
$(IMPLIB) -o $@ $^
I have not attempted to compile Python with any version of gcc prior to
v2.8.1.
-While gcc supports more aggressive optimisation than I use, a lot of
-benchmarking indicates that Python's performance is at best only
-marginally improved by more aggressive optimisation, at least on my
-hardware (AMD Athlon 1.4GHz, VIA C3 800MHz).
+This release sees the default optimisation change to
+"-O3 -fomit-frame-pointer". This works fine too for pgcc 2.95 but not
+for gcc 3.2.1.
+
+With gcc 3.2.1, -O3 causes 2 unexpected test failures: test_format and
+test_unicode. Both these tests pass if -O2 is instead of -O3 with this
+compiler, and the performance difference is negligible (in contrast to
+gcc 2.8.1 and pgcc 2.95, where the performance difference between the
+2 optimisation settings approaches 10%).
17. os.spawnv() and os.spawnve() expose EMX's library routines rather
than use the emulation in os.py.
* imported from the Python core DLL aren't duplicated.
*/
#ifdef Py_BUILD_CORE
-# define PyAPI_FUNC(RTYPE) RTYPE
+# define PyAPI_FUNC(RTYPE) RTYPE
#else
-# define PyAPI_FUNC(RTYPE) extern RTYPE
+# define PyAPI_FUNC(RTYPE) extern RTYPE
#endif
-#define PyAPI_DATA(RTYPE) extern RTYPE
-#define PyMODINIT_FUNC void
+#define PyAPI_DATA(RTYPE) extern RTYPE
+#define PyMODINIT_FUNC void
/* Use OS/2 flavour of threads */
#define WITH_THREAD 1