History log of /PHP-8.0/ext/opcache/tests/opt/dce_009.phpt (Results 1 – 1 of 1)
Revision Date Author Comments
# 0826a548 08-Apr-2021 Nikita Popov

Fix DCE of FREE of COALESCE

When encountering the following SSA graph:

BB1:
#2.T1 [string] = COALESCE #1.CV0($str) [null, string] BB2

BB2:
#5.T1 [st

Fix DCE of FREE of COALESCE

When encountering the following SSA graph:

BB1:
#2.T1 [string] = COALESCE #1.CV0($str) [null, string] BB2

BB2:
#5.T1 [string] = QM_ASSIGN string("")

BB3:
#7.X1 [string] = Phi(#2.X1 [string], #5.X1 [string])
FREE #7.T1 [string]

We would currently determine that #7, #5 are dead, and eliminate
the FREE and QM_ASSIGN. However, we cannot eliminate #2, as
COALESCE is also responsible for control flow.

Fix this my marking all non-CV phis as live to start with. This
can be relaxed to check the kind of the source instruction, but
I couldn't immediately come up with a case where it would be
useful.

show more ...