--- a/main/main.c +++ b/main/main.c @@ -2563,6 +2563,12 @@ #endif zend_observer_shutdown(); + + /* spc-pgo: explicit profile flush so embed/frankenphp callers that exit + * via SYS_exit_group (skipping libc atexit) still get .profraw written. + * Weak symbol → no-op in non-PGO builds. */ + { extern int __llvm_profile_write_file(void) __attribute__((weak)); + if (__llvm_profile_write_file) __llvm_profile_write_file(); } } /* }}} */