Commit b685fb2a94c for php.net
commit b685fb2a94cfa82f1dc26039ae2329a6914ee296
Author: Ilija Tovilo <ilija.tovilo@me.com>
Date: Sun Apr 5 21:00:14 2026 +0200
More general assert() gcov solution
Fully disable assert() when compiling with gcov instead of overriding individual
macros.
diff --git a/Zend/zend_API.h b/Zend/zend_API.h
index 1ec5813678a..e56ded4e8f1 100644
--- a/Zend/zend_API.h
+++ b/Zend/zend_API.h
@@ -1055,13 +1055,7 @@ static zend_always_inline bool zend_char_has_nul_byte(const char *s, size_t know
#define RETURN_ZVAL(zv, copy, dtor) do { RETVAL_ZVAL(zv, copy, dtor); return; } while (0)
#define RETURN_FALSE do { RETVAL_FALSE; return; } while (0)
#define RETURN_TRUE do { RETVAL_TRUE; return; } while (0)
-
-#ifndef HAVE_GCOV
-# define RETURN_THROWS() do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
-#else
-/* Drop ZEND_ASSERT() to avoid untested branch warning in gcov. */
-# define RETURN_THROWS() do { (void) return_value; return; } while (0)
-#endif
+#define RETURN_THROWS() do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
#define HASH_OF(p) (Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties(Z_OBJ_P(p)) : NULL)))
diff --git a/Zend/zend_portability.h b/Zend/zend_portability.h
index c8a6dfa871b..b218886c2da 100644
--- a/Zend/zend_portability.h
+++ b/Zend/zend_portability.h
@@ -106,7 +106,10 @@
# define ZEND_ASSUME(c)
#endif
-#if ZEND_DEBUG
+#ifdef HAVE_GCOV
+/* Disable assert() when compiling with gcov to avoid untested branch warning. */
+# define ZEND_ASSERT(c) ((void)sizeof(c))
+#elif ZEND_DEBUG
# define ZEND_ASSERT(c) assert(c)
#else
# define ZEND_ASSERT(c) ZEND_ASSUME(c)
diff --git a/build/Makefile.gcov b/build/Makefile.gcov
index d0dde7c120c..a1ae17a373e 100644
--- a/build/Makefile.gcov
+++ b/build/Makefile.gcov
@@ -31,7 +31,6 @@ GCOVR_EXCLUDES = \
GCOVR_EXCLUDE_LINES_BY_PATTERNS = \
'.*\b(ZEND_PARSE_PARAMETERS_(START|END|NONE)|Z_PARAM_).*' \
'\s*EMPTY_SWITCH_DEFAULT_CASE\(\)(;)?\s*' \
- '\s*ZEND_ASSERT\(.*\);\s*' \
'\s*ZEND_UNREACHABLE\(\);\s*'
lcov: lcov-html