From 449d1410c9f45ecf63c1fbbea0bd552c1c2bd3be Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Thu, 13 May 2021 15:14:02 +0100 Subject: [PATCH 1/2] Remove 'register' type qualifier The compiler should be smart enough to optimize this on its own. --- Zend/zend_compile.c | 2 +- Zend/zend_execute.c | 8 ++------ Zend/zend_hash.c | 2 +- Zend/zend_ini_scanner.l | 2 +- Zend/zend_language_scanner.l | 4 ++-- Zend/zend_operators.c | 14 +++++++------- Zend/zend_virtual_cwd.c | 4 ++-- ext/mbstring/mbstring.c | 6 +++--- ext/mysqli/mysqli_api.c | 2 +- ext/mysqlnd/mysqlnd_wireprotocol.c | 8 ++++---- ext/pcre/php_pcre.c | 4 ++-- ext/pdo_pgsql/pgsql_driver.c | 2 +- ext/standard/exec.c | 2 +- ext/standard/file.c | 2 +- ext/standard/flock_compat.c | 4 ++-- ext/standard/formatted_print.c | 20 ++++++++++---------- ext/standard/mt_rand.c | 14 +++++++------- ext/standard/quot_print.c | 8 ++++---- ext/standard/string.c | 16 ++++++++-------- ext/standard/url.c | 2 +- ext/zlib/zlib.c | 2 +- main/fopen_wrappers.c | 2 +- 22 files changed, 63 insertions(+), 67 deletions(-) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index c41a501d0fc0d..1a884206fd7c8 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1973,7 +1973,7 @@ void zend_verify_namespace(void) /* {{{ */ Returns directory name component of path */ ZEND_API size_t zend_dirname(char *path, size_t len) { - register char *end = path + len - 1; + char *end = path + len - 1; unsigned int len_adjust = 0; #ifdef ZEND_WIN32 diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 151eb4ecc59a3..38a473bd891ee 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -66,9 +66,7 @@ #endif #if defined(ZEND_VM_FP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)) -# pragma GCC diagnostic ignored "-Wvolatile-register-var" - register zend_execute_data* volatile execute_data __asm__(ZEND_VM_FP_GLOBAL_REG); -# pragma GCC diagnostic warning "-Wvolatile-register-var" + zend_execute_data* volatile execute_data __asm__(ZEND_VM_FP_GLOBAL_REG); #endif #if defined(ZEND_VM_FP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)) @@ -98,9 +96,7 @@ #endif #if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)) -# pragma GCC diagnostic ignored "-Wvolatile-register-var" - register const zend_op* volatile opline __asm__(ZEND_VM_IP_GLOBAL_REG); -# pragma GCC diagnostic warning "-Wvolatile-register-var" + const zend_op* volatile opline __asm__(ZEND_VM_IP_GLOBAL_REG); #else #endif diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 1944e60606b74..a81af58b63e8a 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -2731,7 +2731,7 @@ ZEND_API zval* ZEND_FASTCALL zend_hash_minmax(const HashTable *ht, bucket_compar ZEND_API bool ZEND_FASTCALL _zend_handle_numeric_str_ex(const char *key, size_t length, zend_ulong *idx) { - register const char *tmp = key; + const char *tmp = key; const char *end = key + length; diff --git a/Zend/zend_ini_scanner.l b/Zend/zend_ini_scanner.l index 16b58ac00afc0..73853f6ec1171 100644 --- a/Zend/zend_ini_scanner.l +++ b/Zend/zend_ini_scanner.l @@ -305,7 +305,7 @@ zend_result zend_ini_prepare_string_for_scanning(char *str, int scanner_mode) /* {{{ zend_ini_escape_string() */ static void zend_ini_escape_string(zval *lval, char *str, int len, char quote_type) { - register char *s, *t; + char *s, *t; char *end; zend_ini_copy_value(lval, str, len); diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 02f67d02dc77b..02d79633480c4 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -905,7 +905,7 @@ ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter static zend_result zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type) { - register char *s, *t; + char *s, *t; char *end; if (len <= 1) { @@ -2427,7 +2427,7 @@ inline_char_handler: b?['] { - register char *s, *t; + char *s, *t; char *end; int bprefix = (yytext[0] != '\'') ? 1 : 0; diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 8b0fed8e90a24..2df256cc52c81 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -2683,13 +2683,13 @@ ZEND_API void ZEND_FASTCALL zend_str_tolower(char *str, size_t length) /* {{{ */ ZEND_API char* ZEND_FASTCALL zend_str_tolower_dup_ex(const char *source, size_t length) /* {{{ */ { - register const unsigned char *p = (const unsigned char*)source; - register const unsigned char *end = p + length; + const unsigned char *p = (const unsigned char*)source; + const unsigned char *end = p + length; while (p < end) { if (*p != zend_tolower_ascii(*p)) { char *res = (char*)emalloc(length + 1); - register unsigned char *r; + unsigned char *r; if (p != (const unsigned char*)source) { memcpy(res, source, p - (const unsigned char*)source); @@ -3280,8 +3280,8 @@ static zend_always_inline void zend_memnstr_ex_pre(unsigned int td[], const char ZEND_API const char* ZEND_FASTCALL zend_memnstr_ex(const char *haystack, const char *needle, size_t needle_len, const char *end) /* {{{ */ { unsigned int td[256]; - register size_t i; - register const char *p; + size_t i; + const char *p; if (needle_len == 0 || (end - haystack) < needle_len) { return NULL; @@ -3314,8 +3314,8 @@ ZEND_API const char* ZEND_FASTCALL zend_memnstr_ex(const char *haystack, const c ZEND_API const char* ZEND_FASTCALL zend_memnrstr_ex(const char *haystack, const char *needle, size_t needle_len, const char *end) /* {{{ */ { unsigned int td[256]; - register size_t i; - register const char *p; + size_t i; + const char *p; if (needle_len == 0 || (end - haystack) < needle_len) { return NULL; diff --git a/Zend/zend_virtual_cwd.c b/Zend/zend_virtual_cwd.c index c444bafcdce24..6e988ad963366 100644 --- a/Zend/zend_virtual_cwd.c +++ b/Zend/zend_virtual_cwd.c @@ -301,7 +301,7 @@ CWD_API char *virtual_getcwd(char *buf, size_t size) /* {{{ */ #ifdef ZEND_WIN32 static inline zend_ulong realpath_cache_key(const char *path, size_t path_len) /* {{{ */ { - register zend_ulong h; + zend_ulong h; size_t bucket_key_len; const char *bucket_key_start = tsrm_win32_get_path_sid_key(path, path_len, &bucket_key_len); const char *bucket_key = bucket_key_start; @@ -325,7 +325,7 @@ static inline zend_ulong realpath_cache_key(const char *path, size_t path_len) / #else static inline zend_ulong realpath_cache_key(const char *path, size_t path_len) /* {{{ */ { - register zend_ulong h; + zend_ulong h; const char *e = path + path_len; for (h = Z_UL(2166136261); path < e;) { diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 3da816450491e..e43b8564fd775 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -4232,7 +4232,7 @@ MBSTRING_API size_t php_mb_mbchar_bytes(const char *s) /* {{{ MBSTRING_API char *php_mb_safe_strrchr_ex() */ MBSTRING_API char *php_mb_safe_strrchr_ex(const char *s, unsigned int c, size_t nbytes, const mbfl_encoding *enc) { - register const char *p = s; + const char *p = s; char *last=NULL; if (nbytes == (size_t)-1) { @@ -4252,8 +4252,8 @@ MBSTRING_API char *php_mb_safe_strrchr_ex(const char *s, unsigned int c, size_t ++p; } } else { - register size_t bcnt = nbytes; - register size_t nbytes_char; + size_t bcnt = nbytes; + size_t nbytes_char; while (bcnt > 0) { if ((unsigned char)*p == (unsigned char)c) { last = (char *)p; diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 7ed90a3cfb585..786ca60906e4c 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -79,7 +79,7 @@ mysqli_escape_string_for_tx_name_in_comment(const char * const name) *p_copy++ = '/'; *p_copy++ = '*'; while (1) { - register char v = *p_orig; + char v = *p_orig; if (v == 0) { break; } diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c index 1f4e5a63f4dc3..14b7206c30b73 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.c +++ b/ext/mysqlnd/mysqlnd_wireprotocol.c @@ -91,7 +91,7 @@ static enum_mysqlnd_collected_stats packet_type_to_statistic_packet_count[PROT_L zend_ulong php_mysqlnd_net_field_length(const zend_uchar **packet) { - register const zend_uchar *p= (const zend_uchar *)*packet; + const zend_uchar *p= (const zend_uchar *)*packet; if (*p < 251) { (*packet)++; @@ -121,7 +121,7 @@ php_mysqlnd_net_field_length(const zend_uchar **packet) uint64_t php_mysqlnd_net_field_length_ll(const zend_uchar **packet) { - register const zend_uchar *p = (zend_uchar *)*packet; + const zend_uchar *p = (zend_uchar *)*packet; if (*p < 251) { (*packet)++; @@ -639,7 +639,7 @@ size_t php_mysqlnd_auth_write(MYSQLND_CONN_DATA * conn, void * _packet) static enum_func_status php_mysqlnd_auth_response_read(MYSQLND_CONN_DATA * conn, void * _packet) { - register MYSQLND_PACKET_AUTH_RESPONSE * packet= (MYSQLND_PACKET_AUTH_RESPONSE *) _packet; + MYSQLND_PACKET_AUTH_RESPONSE * packet= (MYSQLND_PACKET_AUTH_RESPONSE *) _packet; MYSQLND_ERROR_INFO * error_info = conn->error_info; MYSQLND_PFC * pfc = conn->protocol_frame_codec; MYSQLND_VIO * vio = conn->vio; @@ -802,7 +802,7 @@ php_mysqlnd_change_auth_response_write(MYSQLND_CONN_DATA * conn, void * _packet) static enum_func_status php_mysqlnd_ok_read(MYSQLND_CONN_DATA * conn, void * _packet) { - register MYSQLND_PACKET_OK *packet= (MYSQLND_PACKET_OK *) _packet; + MYSQLND_PACKET_OK *packet= (MYSQLND_PACKET_OK *) _packet; MYSQLND_ERROR_INFO * error_info = conn->error_info; MYSQLND_PFC * pfc = conn->protocol_frame_codec; MYSQLND_VIO * vio = conn->vio; diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index 4708e643b26be..4249980e5586e 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -1500,8 +1500,8 @@ PHP_FUNCTION(preg_match_all) /* {{{ preg_get_backref */ static int preg_get_backref(char **str, int *backref) { - register char in_brace = 0; - register char *walk = *str; + char in_brace = 0; + char *walk = *str; if (walk[1] == 0) return 0; diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index 6ebe8407093bf..806ba55840f86 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -37,7 +37,7 @@ static char * _pdo_pgsql_trim_message(const char *message, int persistent) { - register int i = strlen(message)-1; + size_t i = strlen(message)-1; char *tmp; if (i>1 && (message[i-1] == '\r' || message[i-1] == '\n') && message[i] == '.') { diff --git a/ext/standard/exec.c b/ext/standard/exec.c index d5e4542caad05..1831b8eaa54d7 100644 --- a/ext/standard/exec.c +++ b/ext/standard/exec.c @@ -281,7 +281,7 @@ PHP_FUNCTION(passthru) */ PHPAPI zend_string *php_escape_shell_cmd(const char *str) { - register size_t x, y; + size_t x, y; size_t l = strlen(str); uint64_t estimate = (2 * (uint64_t)l) + 1; zend_string *cmd; diff --git a/ext/standard/file.c b/ext/standard/file.c index 3010cd860931b..1afa4c648f114 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -722,7 +722,7 @@ PHP_FUNCTION(file) char *filename; size_t filename_len; char *p, *s, *e; - register int i = 0; + int i = 0; char eol_marker = '\n'; zend_long flags = 0; bool use_include_path; diff --git a/ext/standard/flock_compat.c b/ext/standard/flock_compat.c index 47511379d1f0f..34a790b6b8484 100644 --- a/ext/standard/flock_compat.c +++ b/ext/standard/flock_compat.c @@ -162,10 +162,10 @@ PHPAPI int php_flock(int fd, int operation) int inet_aton(const char *cp, struct in_addr *ap) { int dots = 0; - register unsigned long acc = 0, addr = 0; + unsigned long acc = 0, addr = 0; do { - register char cc = *cp; + char cc = *cp; switch (cc) { case '0': diff --git a/ext/standard/formatted_print.c b/ext/standard/formatted_print.c index e500a95734520..0990b390d6b29 100644 --- a/ext/standard/formatted_print.c +++ b/ext/standard/formatted_print.c @@ -85,7 +85,7 @@ php_sprintf_appendstring(zend_string **buffer, size_t *pos, char *add, size_t min_width, size_t max_width, char padding, size_t alignment, size_t len, int neg, int expprec, int always_sign) { - register size_t npad; + size_t npad; size_t req_size; size_t copy_len; size_t m_width; @@ -143,8 +143,8 @@ php_sprintf_appendint(zend_string **buffer, size_t *pos, zend_long number, int always_sign) { char numbuf[NUM_BUF_SIZE]; - register zend_ulong magn, nmagn; - register unsigned int i = NUM_BUF_SIZE - 1, neg = 0; + zend_ulong magn, nmagn; + unsigned int i = NUM_BUF_SIZE - 1, neg = 0; PRINTF_DEBUG(("sprintf: appendint(%x, %x, %x, %d, %d, '%c', %d)\n", *buffer, pos, &ZSTR_LEN(*buffer), number, width, padding, alignment)); @@ -187,8 +187,8 @@ php_sprintf_appenduint(zend_string **buffer, size_t *pos, size_t width, char padding, size_t alignment) { char numbuf[NUM_BUF_SIZE]; - register zend_ulong magn, nmagn; - register unsigned int i = NUM_BUF_SIZE - 1; + zend_ulong magn, nmagn; + unsigned int i = NUM_BUF_SIZE - 1; PRINTF_DEBUG(("sprintf: appenduint(%x, %x, %x, %d, %d, '%c', %d)\n", *buffer, pos, &ZSTR_LEN(*buffer), number, width, padding, alignment)); @@ -326,9 +326,9 @@ php_sprintf_append2n(zend_string **buffer, size_t *pos, zend_long number, const char *chartable, int expprec) { char numbuf[NUM_BUF_SIZE]; - register zend_ulong num; - register zend_ulong i = NUM_BUF_SIZE - 1; - register int andbits = (1 << n) - 1; + zend_ulong num; + zend_ulong i = NUM_BUF_SIZE - 1; + int andbits = (1 << n) - 1; PRINTF_DEBUG(("sprintf: append2n(%x, %x, %x, %d, %d, '%c', %d, %d, %x)\n", *buffer, pos, &ZSTR_LEN(*buffer), number, width, padding, alignment, n, @@ -355,8 +355,8 @@ inline static int php_sprintf_getnumber(char **buffer, size_t *len) { char *endptr; - register zend_long num = ZEND_STRTOL(*buffer, &endptr, 10); - register size_t i; + zend_long num = ZEND_STRTOL(*buffer, &endptr, 10); + size_t i; if (endptr != NULL) { i = (endptr - *buffer); diff --git a/ext/standard/mt_rand.c b/ext/standard/mt_rand.c index 366221d953443..25f6a431a57a0 100644 --- a/ext/standard/mt_rand.c +++ b/ext/standard/mt_rand.c @@ -100,9 +100,9 @@ static inline void php_mt_initialize(uint32_t seed, uint32_t *state) In previous versions, most significant bits (MSBs) of the seed affect only MSBs of the state array. Modified 9 Jan 2002 by Makoto Matsumoto. */ - register uint32_t *s = state; - register uint32_t *r = state; - register int i = 1; + uint32_t *s = state; + uint32_t *r = state; + int i = 1; *s++ = seed & 0xffffffffU; for( ; i < N; ++i ) { @@ -118,9 +118,9 @@ static inline void php_mt_reload(void) /* Generate N new values in state Made clearer and faster by Matthew Bellew (matthew.bellew@home.com) */ - register uint32_t *state = BG(state); - register uint32_t *p = state; - register int i; + uint32_t *state = BG(state); + uint32_t *p = state; + int i; if (BG(mt_rand_mode) == MT_RAND_MT19937) { for (i = N - M; i--; ++p) @@ -159,7 +159,7 @@ PHPAPI uint32_t php_mt_rand(void) /* Pull a 32-bit integer from the generator state Every other access function simply transforms the numbers extracted here */ - register uint32_t s1; + uint32_t s1; if (UNEXPECTED(!BG(mt_rand_is_seeded))) { zend_long bytes; diff --git a/ext/standard/quot_print.c b/ext/standard/quot_print.c index 3cdf7c35016c0..f5472fc386d14 100644 --- a/ext/standard/quot_print.c +++ b/ext/standard/quot_print.c @@ -49,10 +49,10 @@ static char php_hex2int(int c) /* {{{ */ PHPAPI zend_string *php_quot_print_decode(const unsigned char *str, size_t length, int replace_us_by_ws) /* {{{ */ { - register size_t i; - register unsigned const char *p1; - register unsigned char *p2; - register unsigned int h_nbl, l_nbl; + size_t i; + unsigned const char *p1; + unsigned char *p2; + unsigned int h_nbl, l_nbl; size_t decoded_len, buf_size; zend_string *retval; diff --git a/ext/standard/string.c b/ext/standard/string.c index efb13686a9edb..e97c02eef60f7 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -1367,7 +1367,7 @@ PHPAPI zend_string *php_string_toupper(zend_string *s) while (c < e) { if (islower(*c)) { - register unsigned char *r; + unsigned char *r; zend_string *res = zend_string_alloc(ZSTR_LEN(s), 0); if (c != (unsigned char*)ZSTR_VAL(s)) { @@ -1432,7 +1432,7 @@ PHPAPI zend_string *php_string_tolower(zend_string *s) while (c < e) { if (isupper(*c)) { - register unsigned char *r; + unsigned char *r; zend_string *res = zend_string_alloc(ZSTR_LEN(s), 0); if (c != (unsigned char*)ZSTR_VAL(s)) { @@ -1764,8 +1764,8 @@ PHPAPI char *php_stristr(char *s, char *t, size_t s_len, size_t t_len) /* {{{ php_strspn */ PHPAPI size_t php_strspn(const char *s1, const char *s2, const char *s1_end, const char *s2_end) { - register const char *p = s1, *spanp; - register char c = *p; + const char *p = s1, *spanp; + char c = *p; cont: for (spanp = s2; p != s1_end && spanp != s2_end;) { @@ -1781,8 +1781,8 @@ PHPAPI size_t php_strspn(const char *s1, const char *s2, const char *s1_end, con /* {{{ php_strcspn */ PHPAPI size_t php_strcspn(const char *s1, const char *s2, const char *s1_end, const char *s2_end) { - register const char *p, *spanp; - register char c = *s1; + const char *p, *spanp; + char c = *s1; for (p = s1;;) { spanp = s2; @@ -2667,8 +2667,8 @@ PHP_FUNCTION(ucwords) { zend_string *str; char *delims = " \t\r\n\f\v"; - register char *r; - register const char *r_end; + char *r; + const char *r_end; size_t delims_len = 6; char mask[256]; diff --git a/ext/standard/url.c b/ext/standard/url.c index 0614095b8f2d7..efad0d77c2c36 100644 --- a/ext/standard/url.c +++ b/ext/standard/url.c @@ -459,7 +459,7 @@ static int php_htoi(char *s) static const unsigned char hexchars[] = "0123456789ABCDEF"; static zend_always_inline zend_string *php_url_encode_impl(const char *s, size_t len, bool raw) /* {{{ */ { - register unsigned char c; + unsigned char c; unsigned char *to; unsigned char const *from, *end; zend_string *start; diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index 4c82e5db80ce6..2ed24b79b9459 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -612,7 +612,7 @@ PHP_FUNCTION(gzfile) size_t filename_len; int flags = REPORT_ERRORS; char buf[8192] = {0}; - register int i = 0; + int i = 0; zend_long use_include_path = 0; php_stream *stream; diff --git a/main/fopen_wrappers.c b/main/fopen_wrappers.c index 7b11ebd5492cc..6b05da6117a51 100644 --- a/main/fopen_wrappers.c +++ b/main/fopen_wrappers.c @@ -688,7 +688,7 @@ PHPAPI FILE *php_fopen_with_path(const char *filename, const char *mode, const c /* {{{ php_strip_url_passwd */ PHPAPI char *php_strip_url_passwd(char *url) { - register char *p, *url_start; + char *p, *url_start; if (url == NULL) { return ""; From e4eaac7eb2cd0acce2e1dba37ddf56a0fa0406c7 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Thu, 13 May 2021 15:37:00 +0100 Subject: [PATCH 2/2] Revert global register change --- Zend/zend_execute.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 38a473bd891ee..151eb4ecc59a3 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -66,7 +66,9 @@ #endif #if defined(ZEND_VM_FP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)) - zend_execute_data* volatile execute_data __asm__(ZEND_VM_FP_GLOBAL_REG); +# pragma GCC diagnostic ignored "-Wvolatile-register-var" + register zend_execute_data* volatile execute_data __asm__(ZEND_VM_FP_GLOBAL_REG); +# pragma GCC diagnostic warning "-Wvolatile-register-var" #endif #if defined(ZEND_VM_FP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)) @@ -96,7 +98,9 @@ #endif #if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)) - const zend_op* volatile opline __asm__(ZEND_VM_IP_GLOBAL_REG); +# pragma GCC diagnostic ignored "-Wvolatile-register-var" + register const zend_op* volatile opline __asm__(ZEND_VM_IP_GLOBAL_REG); +# pragma GCC diagnostic warning "-Wvolatile-register-var" #else #endif