History log of /PHP-8.2/Zend/Optimizer/sccp.c (Results 1 – 25 of 50)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# c4508422 10-Mar-2023 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Merge branch 'PHP-8.1' into PHP-8.2

* PHP-8.1:
Fix GH-10801: Named arguments in CTE functions cause a segfault


# 2c53d631 08-Mar-2023 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Fix GH-10801: Named arguments in CTE functions cause a segfault

Fixes GH-10801

Named arguments are not supported by the constant evaluation routine, in
the sense that they are i

Fix GH-10801: Named arguments in CTE functions cause a segfault

Fixes GH-10801

Named arguments are not supported by the constant evaluation routine, in
the sense that they are ignored. This causes two issues:
- It causes a crash because not all oplines belonging to the call are
removed, which results in SEND_VA{L,R} which should've been removed.
- It causes semantic issues (demonstrated in the test case).

This case never worked anyway, leading to crashes or incorrect behaviour,
so just prevent CTE of calls with named parameters for now.
We can choose to support it later, but introducing support for this in
a stable branch seems too dangerous.

This patch does not change the removal of SEND_* opcodes in remove_call
because the crash bug can't be triggered anymore with this patch as
there are no named parameters anymore and no variadic CTE functions
exist.

Closes GH-10811.

show more ...

# fa75bd07 20-Jun-2022 Dmitry Stogov

Fix incorrect constant propagation for VERIFY_RETURN_TYPE

This fixes oss-fuzz #48104

# 5a855ee8 02-Jun-2022 Ilija Tovilo

Fix GH-8661: Nullsafe in coalesce triggers undefined variable warning

Closes GH-8690

# 462d00f5 16-May-2022 Dmitry Stogov

Merge branch 'PHP-8.1'

* PHP-8.1:
Fix memory leak


# c430116a 16-May-2022 Dmitry Stogov

Merge branch 'PHP-8.0' into PHP-8.1

* PHP-8.0:
Fix memory leak


# 332bd037 13-May-2022 Arnaud Le Blanc

Do not optimize out ini_get() when the entry does not exist during compilation (#8507)

The entry may exist later if dl is enabled

Fixes GH-8466

# 6ed3b57e 18-Apr-2022 Dmitry Stogov

Fix incorrect constant propagation for VERIFY_RETURN_TYPE

Fixes oss-fuzz #46616

# bf079d05 11-Mar-2022 Dmitry Stogov

Merge branch 'PHP-8.1'

* PHP-8.1:
Fixed memory leak


# 1f5562aa 11-Mar-2022 Dmitry Stogov

Merge branch 'PHP-8.0' into PHP-8.1

* PHP-8.0:
Fixed memory leak


# 2af33234 28-Jan-2022 Dmitry Stogov

Merge branch 'PHP-8.1'

* PHP-8.1:
Fix too aggressive DCE that leads to memory leak


# 34c2324f 28-Jan-2022 Dmitry Stogov

Merge branch 'PHP-8.0' into PHP-8.1

* PHP-8.0:
Fix too aggressive DCE that leads to memory leak


# 4543cd32 30-Dec-2021 Nikita Popov

Remove JMPZNZ opcode

While JMPZNZ can avoid execution of a separate JMP opcode in some
cases, it also prevents smart branch optimization, so creating
JMPZNZ may actually have a negat

Remove JMPZNZ opcode

While JMPZNZ can avoid execution of a separate JMP opcode in some
cases, it also prevents smart branch optimization, so creating
JMPZNZ may actually have a negative effect. It also adds additional
complexity for optimizations.

Drop JMPZNZ in favor of JMPZ+JMP or JMPNZ+JMP.

Closes GH-7857.

show more ...

# 4d907a6b 10-Jan-2022 Dmitry Stogov

Merge branch 'PHP-8.1'

* PHP-8.1:
Fixed NAN handling in SCCP


# 906cb52c 10-Jan-2022 Dmitry Stogov

Merge branch 'PHP-8.0' into PHP-8.1

* PHP-8.0:
Fixed NAN handling in SCCP


# e45653c0 26-Dec-2021 Nikita Popov

Make sure SCCP can evaluate all functions pass1 can

Move evaluation of ini_get() into eval_special_func_call() and
use this helper both in pass1 and sccp.

# c4334fc6 26-Dec-2021 Nikita Popov

Remove special chr/count handling in sccp function evaluation

These can be handled by the generic code. Worth noting that count
will usually go through ZEND_COUNT, and chr on constants i

Remove special chr/count handling in sccp function evaluation

These can be handled by the generic code. Worth noting that count
will usually go through ZEND_COUNT, and chr on constants is
evaluated in the compiler, so these are not particularly compile-time
sensitive either.

show more ...

# 7eae7e5e 25-Dec-2021 Nikita Popov

Remove FETCH_CLASS+INSTANCEOF special case

Instead propagate the FETCH_CLASS return value, so it can be
directly replaced if possible, which will also eliminate the
FETCH_CLASS subse

Remove FETCH_CLASS+INSTANCEOF special case

Instead propagate the FETCH_CLASS return value, so it can be
directly replaced if possible, which will also eliminate the
FETCH_CLASS subsequently.

show more ...

# 92e7cf59 25-Dec-2021 Nikita Popov

Move FETCH_CLASS+INSTANCEOF special case out of update_op1_const()

The generic code was rejecting this to go into a special code path
in SCCP. We should directly do that in SCCP instead,

Move FETCH_CLASS+INSTANCEOF special case out of update_op1_const()

The generic code was rejecting this to go into a special code path
in SCCP. We should directly do that in SCCP instead, to still allow
the generic (and valid) replacement.

show more ...

# 98dfde2c 25-Dec-2021 Nikita Popov

Remove unnecessary INSTANCEOF special case in sccp

While we can't replace the instanceof operand, we will evaluate
the instanceof to false and replace its result anyway. Even in
case

Remove unnecessary INSTANCEOF special case in sccp

While we can't replace the instanceof operand, we will evaluate
the instanceof to false and replace its result anyway. Even in
cases where the instanceof user cannot be replaced, we already
have generic code to convert the opcode to QM_ASSIGN in that
case.

show more ...

# 36dafade 25-Dec-2021 Nikita Popov

Remove unnecessary try_replace_op1() special cases

update_op1_const() can handle these nowadays.

# 8b235380 24-Dec-2021 Dmitry Stogov

Merge branch 'PHP-8.1'

* PHP-8.1:
Fix memory leak in SCCP


# b2939b63 24-Dec-2021 Dmitry Stogov

Merge branch 'PHP-8.0' into PHP-8.1

* PHP-8.0:
Fix memory leak in SCCP


# 32e2d97a 20-Dec-2021 Tyson Andre

Allow internal functions to declare if they support compile-time evaluation, add functions. (#7780)

https://wiki.php.net/rfc/strtolower-ascii means that these functions no longer
depend

Allow internal functions to declare if they support compile-time evaluation, add functions. (#7780)

https://wiki.php.net/rfc/strtolower-ascii means that these functions no longer
depend on the current locale in php 8.2. Before that, this was unsafe to
evaluate at compile time.

Followup to GH-7506

Add strcmp/strcasecmp/strtolower/strtoupper functions

Add bin2hex/hex2bin and related functions

Update test of garbage collection using strtolower to use something else to create a refcounted string

show more ...

# 2337c051 13-Dec-2021 Dmitry Stogov

Merge branch 'PHP-8.1'

* PHP-8.1:
Fix incorrect optimization that leads to memory leak


12