Commit e28b0cf0dd9 for php
commit e28b0cf0dd99a599ef34e9d70d7e81a77d53220a
Author: ndossche <7771979+ndossche@users.noreply.github.com>
Date: Sat Oct 3 15:26:33 2026 +0200
Evaluate ZEND_SPACESHIP in SCCP
diff --git a/Zend/Optimizer/sccp.c b/Zend/Optimizer/sccp.c
index 07de22f8535..620cdd1f49f 100644
--- a/Zend/Optimizer/sccp.c
+++ b/Zend/Optimizer/sccp.c
@@ -1283,6 +1283,7 @@ static void sccp_visit_instr(scdf_ctx *scdf, zend_op *opline, zend_ssa_op *ssa_o
case ZEND_IS_SMALLER_OR_EQUAL:
case ZEND_IS_IDENTICAL:
case ZEND_IS_NOT_IDENTICAL:
+ case ZEND_SPACESHIP:
case ZEND_BW_OR:
case ZEND_BW_AND:
case ZEND_BW_XOR:
diff --git a/ext/opcache/tests/opt/sccp_042.phpt b/ext/opcache/tests/opt/sccp_042.phpt
new file mode 100644
index 00000000000..82c16fb6ea4
--- /dev/null
+++ b/ext/opcache/tests/opt/sccp_042.phpt
@@ -0,0 +1,42 @@
+--TEST--
+SCCP 042: SPACESHIP is evaluated for constant operands
+--INI--
+opcache.enable=1
+opcache.enable_cli=1
+opcache.optimization_level=-1
+opcache.opt_debug_level=0x20000
+opcache.preload=
+--EXTENSIONS--
+opcache
+--FILE--
+<?php
+function test() {
+ $a = 1;
+ $b = 2;
+ return [$a <=> $b, $b <=> $a];
+}
+var_dump(test());
+?>
+--EXPECTF--
+$_main:
+ ; (lines=6, args=0, vars=0, tmps=%d)
+ ; (after optimizer)
+ ; %s
+0000 INIT_FCALL 1 %d string("var_dump")
+0001 INIT_FCALL 0 %d string("test")
+0002 T0 = DO_UCALL
+0003 SEND_VAL T0 1
+0004 DO_ICALL
+0005 RETURN int(1)
+
+test:
+ ; (lines=1, args=0, vars=0, tmps=%d)
+ ; (after optimizer)
+ ; %s
+0000 RETURN array(...)
+array(2) {
+ [0]=>
+ int(-1)
+ [1]=>
+ int(1)
+}