mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
commit
dd3e56ba24
3 changed files with 36 additions and 0 deletions
2
NEWS
2
NEWS
|
@ -22,6 +22,8 @@ PHP NEWS
|
|||
- Opcache:
|
||||
. Fixed bug #81007 (JIT "not supported" on 32-bit x86 -- build problem?).
|
||||
(Nikita)
|
||||
. Fixed bug #81015 (Opcache optimization assumes wrong part of ternary
|
||||
operator in if-condition). (Nikita)
|
||||
|
||||
- PDO_pgsql:
|
||||
. Reverted bug fix for #80892 (PDO::PARAM_INT is treated the same as
|
||||
|
|
|
@ -285,6 +285,14 @@ static void place_essa_pis(
|
|||
default:
|
||||
continue;
|
||||
}
|
||||
|
||||
/* The following patterns all inspect the opline directly before the JMPZ opcode.
|
||||
* Make sure that it is part of the same block, otherwise it might not be a dominating
|
||||
* assignment. */
|
||||
if (blocks[j].len == 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (opline->op1_type == IS_TMP_VAR &&
|
||||
((opline-1)->opcode == ZEND_IS_EQUAL ||
|
||||
(opline-1)->opcode == ZEND_IS_NOT_EQUAL ||
|
||||
|
|
26
ext/opcache/tests/bug81015.phpt
Normal file
26
ext/opcache/tests/bug81015.phpt
Normal file
|
@ -0,0 +1,26 @@
|
|||
--TEST--
|
||||
Bug #81015: Opcache optimization assumes wrong part of ternary operator in if-condition
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
function ternary(bool $enabled, ?string $value): void
|
||||
{
|
||||
// the "true" part is not as trivial in the real case
|
||||
if ($enabled ? true : $value === null) {
|
||||
echo ($value ?? 'NULL') . "\n";
|
||||
} else {
|
||||
echo "INVALID\n";
|
||||
}
|
||||
}
|
||||
|
||||
ternary(true, 'value');
|
||||
ternary(true, null);
|
||||
ternary(false, 'value');
|
||||
ternary(false, null);
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
value
|
||||
NULL
|
||||
INVALID
|
||||
NULL
|
Loading…
Add table
Add a link
Reference in a new issue