diff --git pyobjc-core/setup.py pyobjc-core/setup.py
--- pyobjc-core/setup.py
+++ pyobjc-core/setup.py
@@ -150,15 +150,15 @@ if get_config_var("Py_DEBUG"):
         elif isinstance(cfg_vars[k], str) and "-O3" in cfg_vars[k]:
             cfg_vars[k] = cfg_vars[k].replace("-O3", "-O1 -g")
 
-# else:
-#    # Enable -O3, which enables link-time optimization with
-#    # clang. This appears to have a positive effect on performance.
-#    cfg_vars = get_config_vars()
-#    for k in cfg_vars:
-#        if isinstance(cfg_vars[k], str) and "-O2" in cfg_vars[k]:
-#            cfg_vars[k] = cfg_vars[k].replace("-O2", "-O3")
-#        elif isinstance(cfg_vars[k], str) and "-O3" in cfg_vars[k]:
-#            cfg_vars[k] = cfg_vars[k].replace("-O3", "-O3")
+else:
+    # Enable -O4, which enables link-time optimization with
+    # clang. This appears to have a positive effect on performance.
+    cfg_vars = get_config_vars()
+    for k in cfg_vars:
+        if isinstance(cfg_vars[k], str) and "-O2" in cfg_vars[k]:
+            cfg_vars[k] = cfg_vars[k].replace("-O2", "-O3 -flto")
+        elif isinstance(cfg_vars[k], str) and "-O3" in cfg_vars[k]:
+            cfg_vars[k] = cfg_vars[k].replace("-O3", "-O3 -flto")
 
 
 # XXX: bug in CPython 3.4 repository leaks unwanted compiler flag into distutils.
