#
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 ...
|
#
df0fa5b1 |
| 26-Nov-2019 |
Tyson Andre |
Clean up remaining opcodes for foreach([] as $x) Previously, two useless FE_RESET_R and FE_FREE would be left over whether the empty array was from a literal, a variable, or a class cons
Clean up remaining opcodes for foreach([] as $x) Previously, two useless FE_RESET_R and FE_FREE would be left over whether the empty array was from a literal, a variable, or a class constant. This doesn't pick up the RESET_RW case due to a weakness in our "may throw" modeling. (for foreach by reference). Co-Authored-By: Nikita Popov <nikita.ppv@gmail.com> using https://gist.github.com/nikic/58d367ad605e10299f5433d2d83a0b5b Closes GH-4949
show more ...
|