Revision tags: php-7.3.13RC1, php-7.2.26RC1, php-7.4.0, php-7.2.25, php-7.3.12, php-7.4.0RC6, php-7.3.12RC1, php-7.2.25RC1, php-7.4.0RC5, php-7.1.33, php-7.2.24, php-7.3.11, php-7.4.0RC4, php-7.3.11RC1, php-7.2.24RC1, php-7.4.0RC3, php-7.2.23, php-7.3.10, php-7.4.0RC2, php-7.2.23RC1, php-7.3.10RC1, php-7.4.0RC1, php-7.1.32, php-7.2.22, php-7.3.9, php-7.4.0beta4, php-7.2.22RC1, php-7.3.9RC1, php-7.4.0beta2, php-7.1.31, php-7.2.21, php-7.3.8, php-7.4.0beta1, php-7.2.21RC1, php-7.3.8RC1, php-7.4.0alpha3, php-7.3.7, php-7.2.20, php-7.4.0alpha2, php-7.3.7RC3, php-7.3.7RC2, php-7.2.20RC2, php-7.4.0alpha1, php-7.3.7RC1, php-7.2.20RC1, php-7.2.19, php-7.3.6, php-7.1.30, php-7.2.19RC1, php-7.3.6RC1, php-7.1.29, php-7.2.18, php-7.3.5, php-7.2.18RC1, php-7.3.5RC1, php-7.2.17, php-7.3.4, php-7.1.28, php-7.3.4RC1, php-7.2.17RC1, php-7.1.27, php-7.3.3, php-7.2.16, php-7.3.3RC1, php-7.2.16RC1, php-7.2.15, php-7.3.2, php-7.2.15RC1, php-7.3.2RC1, php-5.6.40, php-7.1.26, php-7.3.1, php-7.2.14, php-7.2.14RC1, php-7.3.1RC1, php-5.6.39, php-7.1.25, php-7.2.13, php-7.0.33, php-7.3.0, php-7.1.25RC1, php-7.2.13RC1, php-7.3.0RC6, php-7.1.24, php-7.2.12, php-7.3.0RC5, php-7.1.24RC1, php-7.2.12RC1, php-7.3.0RC4, php-7.1.23, php-7.2.11, php-7.3.0RC3, php-7.1.23RC1, php-7.2.11RC1, php-7.3.0RC2, php-5.6.38, php-7.1.22, php-7.3.0RC1, php-7.2.10, php-7.0.32, php-7.1.22RC1, php-7.3.0beta3, php-7.2.10RC1, php-7.1.21, php-7.2.9, php-7.3.0beta2, php-7.1.21RC1, php-7.3.0beta1, php-7.2.9RC1, php-5.6.37, php-7.1.20, php-7.3.0alpha4, php-7.0.31, php-7.2.8, php-7.1.20RC1, php-7.2.8RC1, php-7.3.0alpha3, php-7.3.0alpha2, php-7.1.19, php-7.2.7, php-7.1.19RC1, php-7.3.0alpha1, php-7.2.7RC1, php-7.1.18, php-7.2.6, php-7.2.6RC1, php-7.1.18RC1, php-5.6.36, php-7.2.5, php-7.1.17, php-7.0.30, php-7.1.17RC1, php-7.2.5RC1, php-5.6.35, php-7.0.29, php-7.2.4, php-7.1.16, php-7.1.16RC1, php-7.2.4RC1, php-7.1.15, php-5.6.34, php-7.2.3, php-7.0.28, php-7.2.3RC1, php-7.1.15RC1, php-7.1.14, php-7.2.2, php-7.1.14RC1, php-7.2.2RC1, php-7.1.13, php-5.6.33, php-7.2.1, php-7.0.27 |
|
#
ccd4716e |
| 02-Jan-2018 |
Xinchen Hui |
year++
|
Revision tags: php-7.2.1RC1, php-7.1.13RC1, php-7.0.27RC1, php-7.2.0, php-7.1.12, php-7.0.26, php-7.1.12RC1, php-7.2.0RC6, php-7.0.26RC1, php-7.1.11, php-5.6.32, php-7.2.0RC5, php-7.0.25, php-7.1.11RC1, php-7.2.0RC4, php-7.0.25RC1, php-7.1.10, php-7.2.0RC3, php-7.0.24, php-7.2.0RC2, php-7.1.10RC1, php-7.0.24RC1, php-7.1.9, php-7.2.0RC1, php-7.0.23, php-7.1.9RC1, php-7.2.0beta3, php-7.0.23RC1, php-7.1.8, php-7.2.0beta2, php-7.0.22, php-7.1.8RC1, php-7.2.0beta1, php-7.0.22RC1, php-5.6.31, php-7.0.21, php-7.1.7, php-7.2.0alpha3, php-7.1.7RC1, php-7.0.21RC1, php-7.2.0alpha2, php-7.1.6, php-7.2.0alpha1, php-7.0.20, php-7.1.6RC1, php-7.0.20RC1, php-7.1.5, php-7.0.19, php-7.0.19RC1, php-7.1.5RC1, php-7.1.4, php-7.0.18, php-7.1.4RC1, php-7.0.18RC1, php-7.1.3, php-7.0.17 |
|
#
d9231b16 |
| 07-Mar-2017 |
Dmitry Stogov |
Fixed pointer allignment
|
Revision tags: php-7.1.3RC1, php-7.0.17RC1, php-7.1.2, php-7.0.16, php-7.0.16RC1, php-7.1.2RC1, php-5.6.30, php-7.0.15, php-5.6.30RC1, php-7.1.1RC1, php-7.0.15RC1 |
|
#
dac6c639 |
| 04-Jan-2017 |
Sammy Kaye Powers |
Update copyright headers to 2017
|
Revision tags: php-7.1.1, php-5.6.29, php-7.0.14, php-7.1.0, php-5.6.29RC1, php-7.0.14RC1, php-7.1.0RC6, php-5.6.28, php-7.0.13 |
|
#
d3325ff7 |
| 31-Oct-2016 |
Dmitry Stogov |
typo
|
#
e696927e |
| 31-Oct-2016 |
Dmitry Stogov |
Fixed reference-counter inference
|
Revision tags: php-5.6.28RC1, php-7.1.0RC5, php-7.0.13RC1, php-7.1.0RC4 |
|
#
659cc278 |
| 14-Oct-2016 |
Nikita Popov |
Various RC inference fixes
|
Revision tags: php-5.6.27, php-7.0.12 |
|
#
b2d53e47 |
| 06-Oct-2016 |
Dmitry Stogov |
Updated reference-counting inferece rules. The previous rules refected PHP-5 behavior and were completely wrong for PHP-7. (e.g. scalars don't have reference counters at all). This change sho
Updated reference-counting inferece rules. The previous rules refected PHP-5 behavior and were completely wrong for PHP-7. (e.g. scalars don't have reference counters at all). This change shouldn't affect anything, because results of this inference are not used yet.
show more ...
|
Revision tags: php-7.1.0RC3, php-5.6.27RC1, php-7.0.12RC1 |
|
#
846441ab |
| 16-Sep-2016 |
Dmitry Stogov |
Prevent optimization of huge functions.
|
Revision tags: php-5.6.26, php-7.1.0RC2, php-7.0.11, php-5.6.26RC1, php-7.1.0RC1, php-7.0.11RC1 |
|
#
129e8dad |
| 23-Aug-2016 |
Dmitry Stogov |
op_arrays may be optimized independetly and "script" might be NULL
|
Revision tags: php-7.1.0beta3, php-5.6.25, php-7.0.10, php-7.1.0beta2, php-5.6.25RC1, php-7.0.10RC1, php-7.1.0beta1, php-5.6.24, php-7.0.9, php-5.5.38, php-5.6.24RC1, php-7.1.0alpha3, php-7.0.9RC1 |
|
#
871cd76a |
| 29-Jun-2016 |
Dmitry Stogov |
clanup
|
Revision tags: php-7.1.0alpha2, php-7.0.8, php-5.6.23, php-5.5.37, php-5.6.23RC1 |
|
#
04688951 |
| 07-Jun-2016 |
Nikita Popov |
Add support for "instanceof" pi nodes
|
#
9877d8f0 |
| 07-Jun-2016 |
Nikita Popov |
Use union for pi constraints This will make it easier to extend pi constraints without impacting structure sizes.
|
Revision tags: php-7.0.8RC1, php-7.1.0alpha1 |
|
#
b111da96 |
| 31-May-2016 |
Dmitry Stogov |
Split ZEND_SEND_VAR_NO_REF into ZEND_SEND_VAR_NO_REF and ZEND_SEND_VAR_NO_REF_EX (similar to ZEND_SEND_VAL) and remove ZEND_ARG_* flags.
|
#
da511f25 |
| 27-May-2016 |
Xinchen Hui |
Typo & cleanup
|
Revision tags: php-5.6.22, php-5.5.36, php-7.0.7 |
|
#
e745b4ca |
| 18-May-2016 |
Nikita Popov |
Replace BB end with BB len And support empty blocks everywhere.
|
#
b5bdb40c |
| 12-May-2016 |
Nikita Popov |
Fix phi placement for pi targets If the pi target has multiple predecessors, we need to place a phi there. However it's not possible to express this in terms of dominance frontiers,
Fix phi placement for pi targets If the pi target has multiple predecessors, we need to place a phi there. However it's not possible to express this in terms of dominance frontiers, so we need to explicitly add it to the phi set. This does not yet solve the problem of non-minimal SSA for the case where the target has multiple predecessors, but dominates all predecessors (apart from the one creating the pi) -- but that's an existing issue.
show more ...
|
#
b1c3c9a5 |
| 12-May-2016 |
Nikita Popov |
Explicitly construct phi set during def propagation Previously the phi set was first computed during def propagation and then computed again (per-block) during actual phi placement.
Explicitly construct phi set during def propagation Previously the phi set was first computed during def propagation and then computed again (per-block) during actual phi placement. This commit changes this to store the phi set computed during def propagation. This makes SSA construction slightly faster (5%), but the main purpose here is to pave the way for the next commit. This also fixes a potential issue with the handling of irreducible loops -- they generated additional phis, but these were not accounted for in def propagation. (Though I'm not sure if we can even have any irreducible loops right now.)
show more ...
|
Revision tags: php-5.6.22RC1, php-7.0.7RC1, php-7.0.6, php-5.6.21, php-5.5.35, php-5.6.21RC1, php-7.0.6RC1, php-5.6.20, php-5.5.34, php-7.0.5, php-5.6.20RC1, php-7.0.5RC1, php-5.6.19, php-5.5.33, php-7.0.4, php-5.6.19RC1, php-7.0.4RC1, php-5.6.18 |
|
#
434e0fb3 |
| 02-Feb-2016 |
Nikita Popov |
Take pi defs into account when propagating defs Previously pi placement happened after initial phi placement. Afterwards a second phi placement pass was performed, however it incorre
Take pi defs into account when propagating defs Previously pi placement happened after initial phi placement. Afterwards a second phi placement pass was performed, however it incorrectly only placed phis on the dominance frontier, rather than the iterated dominance frontier. This is fixed by moving pi placement before the propagation of defs on the iterated DFs, and adding a def for each added pi. While this ensures that we generate correct conservative SSA, there is still one remaining case in which we may generate non-minimal SSA form. Consider: |1| |pi v |2|<--\ | | \----/ The pi is semanically located along the edge 1->2, however we place it (and its def point) in 2, thus leading to the generation of an additional (trivial) phi in 2. Conflicts: ext/opcache/Optimizer/zend_ssa.c
show more ...
|
#
721be3e0 |
| 02-Feb-2016 |
Nikita Popov |
Make pi placement independent of phi placement This interdependence is problematic because we can't propagate pi def points in the initial dominance frontier propagation. The used ru
Make pi placement independent of phi placement This interdependence is problematic because we can't propagate pi def points in the initial dominance frontier propagation. The used rule for multiple-predecessor blocks may also miss cases where placing the pi would have been useful. The new heuristic for pi placement checks that a) the variable is live-in and b) for the "from" block that generated the pi, the other successor does not dominate all other predecessors of the "to" block. The purpose of case b) may be illustrated with an example: if (is_int($i)) { // place pi here } // but don't place pi here The reason we do not want to place the second pi is that we generally place pis in positive+negative pairs, and in this case the pair would merge in a phi and cancel out, so we get no useful information out of it.
show more ...
|
#
65faf0a5 |
| 24-Apr-2016 |
Nikita Popov |
Drop some unnecessary checks
|
#
cafe78d1 |
| 24-Apr-2016 |
Nikita Popov |
Introduce ZEND_BITSET_FOREACH macros
|
#
304e5ae3 |
| 21-Apr-2016 |
Nikita Popov |
Adjust DFG allocation size Now we need one set less...
|
#
a5944f8d |
| 21-Apr-2016 |
Nikita Popov |
Merge def and gen sets For live-variable analysis it does not matter if def includes variables that are previously use in the same block, the data flow equations still have the same
Merge def and gen sets For live-variable analysis it does not matter if def includes variables that are previously use in the same block, the data flow equations still have the same result. As such there is no need to compute separate gen & def sets. I'm keeping the name "def", because use of "gen" in this context is pretty confusing (gen is usually the use set, not the def set).
show more ...
|
#
4f726be6 |
| 16-Apr-2016 |
Nikita Popov |
Fix SSA for SEND_UNPACK
|
#
aed42496 |
| 07-Apr-2016 |
Dmitry Stogov |
Fixed handling of return statement without a value.
|