Skip to content

Commit 63bbed5

Browse files
committed
Evaluation of few more constant functions
1 parent 07f45d8 commit 63bbed5

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

ext/opcache/Optimizer/sccp.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,8 @@ static inline int ct_eval_func_call(
570570
int overflow;
571571

572572
if ((zend_string_equals_literal(name, "array_keys")
573-
|| zend_string_equals_literal(name, "array_values"))
573+
|| zend_string_equals_literal(name, "array_values")
574+
|| zend_string_equals_literal(name, "array_flip"))
574575
&& num_args == 1
575576
&& Z_TYPE_P(args[0]) == IS_ARRAY) {
576577
/* pass */
@@ -584,7 +585,10 @@ static inline int ct_eval_func_call(
584585
} else if ((zend_string_equals_literal(name, "array_merge")
585586
|| zend_string_equals_literal(name, "array_replace")
586587
|| zend_string_equals_literal(name, "array_merge_recursive")
587-
|| zend_string_equals_literal(name, "array_merge_recursive"))
588+
|| zend_string_equals_literal(name, "array_merge_recursive")
589+
|| zend_string_equals_literal(name, "array_diff")
590+
|| zend_string_equals_literal(name, "array_diff_assoc")
591+
|| zend_string_equals_literal(name, "array_diff_key"))
588592
&& num_args > 0) {
589593
for (i = 0; i < num_args; i++) {
590594
if (Z_TYPE_P(args[i]) != IS_ARRAY) {
@@ -612,6 +616,11 @@ static inline int ct_eval_func_call(
612616
} ZEND_HASH_FOREACH_END();
613617
}
614618
/* pass */
619+
} else if (zend_string_equals_literal(name, "version_comapre")
620+
&& (num_args == 2 || (num_args == 3 && Z_TYPE_P(args[2]) == IS_STRING))
621+
&& Z_TYPE_P(args[0]) == IS_STRING
622+
&& Z_TYPE_P(args[1]) == IS_STRING) {
623+
/* pass */
615624
} else {
616625
return FAILURE;
617626
}

0 commit comments

Comments
 (0)