Commit 2b7489437b1 for php.net

commit 2b7489437b1b085bab57c62a64153de0a1431d6d
Author: Ilija Tovilo <ilija.tovilo@me.com>
Date:   Fri Apr 3 21:54:57 2026 +0200

    More gcov improvements

    - Suppress debug assertions
    - Exclude ext/opcache/jit/ir

    Closes GH-21629

diff --git a/Zend/zend_API.h b/Zend/zend_API.h
index e56ded4e8f1..1ec5813678a 100644
--- a/Zend/zend_API.h
+++ b/Zend/zend_API.h
@@ -1055,7 +1055,13 @@ 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)
-#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; 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 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/build/Makefile.gcov b/build/Makefile.gcov
index d389cecdd19..d0dde7c120c 100644
--- a/build/Makefile.gcov
+++ b/build/Makefile.gcov
@@ -24,10 +24,15 @@ GCOVR_EXCLUDES = \
 	'ext/hash/sha3/.*' \
 	'ext/lexbor/lexbor/.*' \
 	'ext/mbstring/libmbfl/.*' \
+	'ext/opcache/jit/ir/.*' \
 	'ext/pcre/pcre2lib/.*' \
 	'ext/uri/uriparser/.*'

-GCOVR_EXCLUDE_LINES_BY_PATTERN = '.*\b(ZEND_PARSE_PARAMETERS_(START|END|NONE)|Z_PARAM_).*'
+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

@@ -53,14 +58,14 @@ gcovr-html:
 	@rm -rf gcovr_html/
 	@mkdir gcovr_html
 	gcovr -sr . -o gcovr_html/index.html --html --html-details \
-		--exclude-lines-by-pattern $(GCOVR_EXCLUDE_LINES_BY_PATTERN) \
+		$(foreach pattern, $(GCOVR_EXCLUDE_LINES_BY_PATTERNS), --exclude-lines-by-pattern $(pattern)) \
 		$(foreach lib, $(GCOVR_EXCLUDES), -e $(lib))

 gcovr-xml:
 	@echo "Generating gcovr XML"
 	@rm -f gcovr.xml
 	gcovr -sr . -o gcovr.xml --xml \
-		--exclude-lines-by-pattern $(GCOVR_EXCLUDE_LINES_BY_PATTERN) \
+		$(foreach pattern, $(GCOVR_EXCLUDE_LINES_BY_PATTERNS), --exclude-lines-by-pattern $(pattern)) \
 		$(foreach lib, $(GCOVR_EXCLUDES), -e $(lib))

 .PHONY: gcovr-html lcov-html php_lcov.info