Commit Graph

1525 Commits

Author SHA1 Message Date
Dmitry Stogov
776bef8447 Fixed bug in type inference 2017-11-27 10:16:16 +03:00
Xinchen Hui
9d02227243 Improved fix 2017-11-27 12:03:37 +08:00
Xinchen Hui
c412b8b384 Fixed bug #75556 (Invalid opcode 138/1/1) 2017-11-25 00:54:15 +08:00
Dmitry Stogov
2a6a1fd22c typo 2017-11-22 16:30:57 +03:00
Nikita Popov
95e9cc2871 Backport some printf() fixes to 7.2 2017-11-16 21:26:33 +01:00
Dmitry Stogov
b6294bbc6c Fixed assertion on phpMyAdmin-4.7.5 home page 2017-11-08 12:51:53 +03:00
Joe Watkins
c3ee17065b
Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  fix wrong check of definition_phi->constraint.range.max_ssa_var
2017-11-03 17:49:52 +00:00
MITSUNARI Shigeo
21dbd2ffcd
fix wrong check of definition_phi->constraint.range.max_ssa_var 2017-11-03 17:49:42 +00:00
Xinchen Hui
db4eb54149 Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Use abbrev
2017-10-30 18:17:41 +08:00
Xinchen Hui
d9de0f8683 Use abbrev 2017-10-30 16:26:59 +08:00
Dmitry Stogov
49256dcf6f Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Fixed type inference
2017-10-30 10:44:12 +03:00
Dmitry Stogov
230e505fd8 Fixed type inference 2017-10-30 10:41:27 +03:00
Anatol Belski
5315cea6e2 Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Backport 7ff13badda into 7.0+
2017-10-18 16:27:31 +02:00
Anatol Belski
53d8775015 Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0:
  Backport 7ff13badda into 7.0+
2017-10-18 16:24:23 +02:00
Anatol Belski
d82805f097 Backport 7ff13badda into 7.0+ 2017-10-18 16:02:56 +02:00
Xinchen Hui
e53a9aaa4a Fixed bug (assertion fails with extended info generated) 2017-10-17 19:47:29 +08:00
Xinchen Hui
8e147f12b9 Fixed bug (Phi sources removel) 2017-10-16 15:01:06 +08:00
Xinchen Hui
abbdbc21b0 Fixed bug #75357 (segfault loading WordPress wp-admin) 2017-10-14 23:12:29 +08:00
Xinchen Hui
a52d1088e5 Added skipf 2017-10-13 18:21:41 +08:00
Xinchen Hui
e4f7ff9c0f Fixed bug #75370 (Webserver hangs on valid PHP text) 2017-10-13 18:18:10 +08:00
Xinchen Hui
e50cc4d3af Fixed typo 2017-10-13 17:35:02 +08:00
Dmitry Stogov
2929110ce1 Fixed cleanup after optimization passes 2017-10-10 19:25:51 +03:00
Rasmus Lerdorf
ec3ea3081d Add line numbers to Optimizer debug output 2017-10-06 17:18:58 -03:00
Dmitry Stogov
e9426cf816 Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Fixed rarely possible use-after-free
2017-10-04 16:39:47 +03:00
Dmitry Stogov
b6e34eaf04 Fixed rarely possible use-after-free 2017-10-04 16:38:55 +03:00
Xinchen Hui
d3aa65231e Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Fixed bug #75267 (possible &/&& mixup)
2017-09-29 11:17:07 +08:00
Xinchen Hui
9fd33c1f20 Fixed bug #75267 (possible &/&& mixup) 2017-09-29 11:16:32 +08:00
Dmitry Stogov
978c6c4e31 Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Fixed bug #75255 (Request hangs and not finish)
2017-09-27 17:17:46 +03:00
Dmitry Stogov
1c68d63f35 Fixed bug #75255 (Request hangs and not finish) 2017-09-27 17:16:24 +03:00
Dmitry Stogov
2a33e357cd Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Added missed ~
2017-09-25 12:23:01 +03:00
Dmitry Stogov
550595c085 Added missed ~ 2017-09-25 12:22:35 +03:00
Dmitry Stogov
801cdb8945 Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Fixed type inference
2017-09-25 12:04:13 +03:00
Dmitry Stogov
d526ddec85 Fixed type inference 2017-09-25 12:03:47 +03:00
Xinchen Hui
ed2a5ebaeb Fixed bug #75230 (Invalid opcode 49/1/8 using opcache) 2017-09-24 18:01:29 +08:00
Dmitry Stogov
28391b9e7f Using "enum" types as bit-fields is not portable. 2017-09-22 13:35:41 +03:00
Dmitry Stogov
6544ec5460 Fixed NOP removal (empty blocks should be shifted as well) 2017-09-20 01:10:31 +03:00
Dmitry Stogov
084e34098a Fixed optimization (the bug caused endless-loop on micro_bench.php in master branch) 2017-09-18 14:10:18 +03:00
Dmitry Stogov
251a5599b4 Fixed SSA reconstruction 2017-09-07 17:10:38 +03:00
Dmitry Stogov
384da65a97 Fixed edge-case in SSA use/def chain construction and type inference. 2017-09-04 21:58:24 +03:00
Dmitry Stogov
b5935c339e Fixed tests 2017-09-04 20:12:17 +03:00
Dmitry Stogov
ea734e2ac2 Fixed incorect constant conditional jump elimination 2017-09-04 19:11:17 +03:00
Dmitry Stogov
eb21300a26 Revert "Fixed incorrect optimizaton (update of jump instructions should be also reflected in CFG update)"
This reverts commit db5b8dbcdf.
2017-09-04 16:50:12 +03:00
Dmitry Stogov
db5b8dbcdf Fixed incorrect optimizaton (update of jump instructions should be also reflected in CFG update) 2017-09-04 14:07:37 +03:00
Dmitry Stogov
ebb00c1e0f Fixed typo 2017-09-04 13:01:30 +03:00
Dmitry Stogov
4f1c2c22ca Prevent duplicate debug output 2017-09-04 12:58:40 +03:00
Anatol Belski
a454e38b7c Enable PGO for Opcache 2017-08-24 23:36:21 +02:00
Xinchen Hui
ee26c1efbc Fixed type-infer 2017-08-21 16:35:07 +08:00
Xinchen Hui
2e002eaf70 Fixed for RESOURCE too 2017-08-19 18:55:56 +08:00
Xinchen Hui
4b6345a3ae Fixed RC1 Hanlding 2017-08-19 18:51:17 +08:00
Xinchen Hui
ea0df07398 Fixed type-info for ZEND_FETCH_DIIM_UNSET 2017-08-19 18:48:10 +08:00
Dmitry Stogov
3866c1699e More accurate reference counting inference 2017-08-17 20:03:12 +03:00
Xinchen Hui
30fb70dd25 Fixed type-infer on ZEND_FETCH_DIM_FUNC_ARG 2017-08-17 21:57:28 +08:00
Dmitry Stogov
db2807e4d2 Added few more jump threading optimisation patterns 2017-08-16 09:17:32 +03:00
Dmitry Stogov
df5104bfc9 Fixed removing dead live ranges 2017-08-14 13:54:52 +03:00
Dmitry Stogov
2fab62271a Revert "Fixed live_range removing (bug can be triggred by JIT)"
This reverts commit aecf996510.
2017-08-14 12:00:02 +03:00
Xinchen Hui
aecf996510 Fixed live_range removing (bug can be triggred by JIT) 2017-08-11 21:56:30 +08:00
Xinchen Hui
4375a6c5cd Fixed type infer for FUNC_GET_ARGS 2017-08-11 00:33:55 +08:00
Xinchen Hui
0e61cddeb1 Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Fixed bug #74980 (Narrowing occurred during type inference)
2017-07-26 12:06:55 +08:00
Xinchen Hui
3df47c12f7 Fixed bug #74980 (Narrowing occurred during type inference) 2017-07-26 12:06:33 +08:00
Nikita Popov
4672411ef5 Fix incorrect propagation of ZEND_BOOL in pass 1
BOOL (next to QM_ASSIGN) is one of the opcodes that can assign to
a temporary that is assigned in multiple branches. Pass 1 does
not check for this, so we should not try to handle it at that
point. Block pass and sccp will be able to treat this correctly.
2017-07-22 17:23:50 +02:00
Nikita Popov
96665fbfe0 Fix block removal if there are duplicate successors 2017-07-22 14:53:23 +02:00
Nikita Popov
3fa76ac54f Merge branch 'PHP-7.1' into PHP-7.2 2017-07-21 23:22:56 +02:00
Nikita Popov
69ec51eb02 Fix DFG construction for VERIFY_RETURN
`use` only contains uses prior to definition. This was not
honoured for VERIFY_RETURN with a temporary operand.

The test case only breaks on PHP 7.2.
2017-07-21 23:20:56 +02:00
Dmitry Stogov
0b2c456312 fixed comments 2017-07-20 23:29:22 +03:00
Dmitry Stogov
1b9d0c8af3 Fixed wrong edges_count re-calculation. 2017-07-20 23:28:05 +03:00
Dmitry Stogov
3185f8628f Convert CONCAT into FAST_CONCAT for non-object operands 2017-07-19 15:41:46 +03:00
Dmitry Stogov
8447b86eef Remove dead live ranges and FREE instructions 2017-07-19 13:07:33 +03:00
Dmitry Stogov
5274cefb4d Remove live ranges 2017-07-19 13:06:25 +03:00
Nikita Popov
ecb67e59d7 Don't reuse compare_function operands
If the same zval is used for the result and one operand, then the
function thinks it is responsible for freeing the value in case of
a type conversion.
2017-07-19 01:04:36 +02:00
Dmitry Stogov
0903f6bffb Remove dead JMP/JMPZ/JMPNZ/JMPZNZ (DCE pass can't remove them) 2017-07-18 20:43:06 +03:00
Dmitry Stogov
582882ae18 Constant evaluation of few more constant functions 2017-07-18 20:42:40 +03:00
Dmitry Stogov
c41d2535b1 Disabled compile-time constant DOUBLE to STRING evaluation (its result depends on run-time 'precision' setting) 2017-07-18 20:41:01 +03:00
Dmitry Stogov
eb6c7471cb Constant evaluation of in_array() (support for more cases). 2017-07-17 17:27:21 +03:00
Dmitry Stogov
1180d8c801 Separate ISSET_ISEMPTY_CV/UNSET_CV from ISSET_ISEMPTY_VAR/UNSET_VAR 2017-07-17 14:11:50 +03:00
Dmitry Stogov
d9d3b2c206 Fixed CFG/SSA construction (avoid multiple identical predecessors) 2017-07-17 13:35:47 +03:00
Dmitry Stogov
b31e77dbea Allocate additional slot for third argument 2017-07-17 09:11:14 +03:00
Dmitry Stogov
2a286ad599 Added goblal optimisation passes based on data flow analyses using SSA form:
SCCP - Sparse Conditional Constant Propagation, DCE - Dead Code Elimination
and removing of unused local variablesi.

Squashed commit of the following:

commit bf5ac05fc0
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 14:26:40 2017 +0300

    Added news entry

commit 4cfa6984b1
Merge: 1cdaaac 1f261d7
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 13:30:50 2017 +0300

    Merge branch 'sccp' into dce

    * sccp:
      Bump OCI8 version for recent patch
      WS
      Fix test title
      Ensure that the stream position is kept between reads
      Turn off EXIF_DEBUG so Travis don't complain at me
      Don't add a new line to undefined tags in EXIF_DEBUG mode
      Fix compile error with EXIF_DEBUG
      update NEWS
      disable --with-pcre-valgrind on travis
      fix default args for --with-pcre-valgrind
      Enable valgrind support for PCRE by default in debug builds
      add oniguruma.patch to ease future upgrades
      SIZEOF_SIZE_T doesn't exist on AIX and POWER8 (ppc64le), keep using SIZEOF_LONG

commit 1f261d77cb
Merge: a32a3fb b280ba8
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 13:30:39 2017 +0300

    Merge branch 'master' into sccp

    * master:
      Bump OCI8 version for recent patch
      WS
      Fix test title
      Ensure that the stream position is kept between reads
      Turn off EXIF_DEBUG so Travis don't complain at me
      Don't add a new line to undefined tags in EXIF_DEBUG mode
      Fix compile error with EXIF_DEBUG
      update NEWS
      disable --with-pcre-valgrind on travis
      fix default args for --with-pcre-valgrind
      Enable valgrind support for PCRE by default in debug builds
      add oniguruma.patch to ease future upgrades
      SIZEOF_SIZE_T doesn't exist on AIX and POWER8 (ppc64le), keep using SIZEOF_LONG

commit 1cdaaac601
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 13:27:12 2017 +0300

    Use generic evalution mechanism for constant functions

commit 75bd92a609
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 12:39:05 2017 +0300

    Fixed use-def chain unlinking for "$a = 1; $a += $a;"

commit 7d7746814d
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 12:38:29 2017 +0300

    Enable duplicate predecessors verification

commit 6b1667f206
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:55:20 2017 +0300

    Removed duplicate definitions

commit 1415b53014
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:51:29 2017 +0300

    Enable evaluation of constant functions with 3 arguments

commit ab367deef9
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:45:13 2017 +0300

    Removed deprecated check

commit c51659ea8c
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:40:42 2017 +0300

    Reduce limit

commit b1be5a04d7
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:38:23 2017 +0300

    Disable constant array_flip() evaluation

commit 7a5b0596a1
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:33:20 2017 +0300

    Fixed comments

commit 377e48b342
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:28:50 2017 +0300

    Cast of string to long/double can not produce exception

commit 228dd01af3
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:24:50 2017 +0300

    Added missed return

commit 0972a21636
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:22:36 2017 +0300

    objects may be nested in array operands

commit bd346bfa5c
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:19:20 2017 +0300

    ~$resource is unsupported.

commit c77e45610c
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:15:39 2017 +0300

    ws

commit 0b64d71109
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:14:40 2017 +0300

    Call to zend_ssa_unlink_use_chain() shouldn't be dropped

commit cb7059fcf6
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:11:58 2017 +0300

    Safer check for function name. The previous check is incorrect in ZTS build.

commit 7280aba1e1
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 11:02:10 2017 +0300

    Missing warning

commit 54bc7b576c
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 14 10:56:42 2017 +0300

    Proper check for successors count

commit ea8c004a15
Merge: 624f76d a32a3fb
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 13 15:56:26 2017 +0300

    Merge branch 'sccp' into dce

    * sccp:
      fix fold
      Fixed bug #74866 extension_dir = "./ext" now use current directory for base
      add next vc15 toolset to the list
      Revert "Enable whole program optimization for builds without PGO, too"
      extend comment
      cleanup discontinued target

commit a32a3fb67c
Merge: 2722dbf 5fb2abd
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 13 15:56:14 2017 +0300

    Merge branch 'master' into sccp

    * master:
      fix fold
      Fixed bug #74866 extension_dir = "./ext" now use current directory for base
      add next vc15 toolset to the list
      Revert "Enable whole program optimization for builds without PGO, too"
      extend comment
      cleanup discontinued target

commit 624f76df48
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 13 12:30:27 2017 +0300

    Set RETURN_VALUE_UNUSED instead of additional FREE opcode, if possible.
    Keep alive dead instructions that have to free two temporary variables.

commit 94c9b26695
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 13 11:51:14 2017 +0300

    More accurate "vararg" handling in DCE

commit 665ed8491c
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 13 09:31:45 2017 +0300

    Improved DCE performance, by avoiding redundand checks and repeatable iterations.

commit 3f42ce18ba
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 23:03:11 2017 +0300

    Added few more instructions without side effects and exceptions

commit b17178f991
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 20:39:02 2017 +0300

    Temprary enable SSA validation in DEBUG build

commit e238a8dc79
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 20:37:53 2017 +0300

    Inegrate SSA validation developed by Nikita

commit a247cee80b
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 20:31:27 2017 +0300

    Perform DCE pass before other DFA optimisations, to properly reconstruct "no value" use-def chains.

commit a651564f29
Merge: 06f6eb0 2722dbf
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 18:55:05 2017 +0300

    Merge branch 'sccp' into dce

    * sccp:
      Resources should be closed during object destructioin, not during freeing.
      Guard against AppVeyor losing deps issue
      increase poll timeout as false positives mitigation
      Value of EG(user_exception_handler) should't relive request boundary
      sodium ext: remove function names before exception messages
      sodium ext: update the crypto_kx_*() API to the libsodium one
      Revert "fix macro redifinitions"

commit 2722dbfdf5
Merge: 6595ea3 09d3b73
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 18:54:48 2017 +0300

    Merge branch 'master' into sccp

    * master:
      Resources should be closed during object destructioin, not during freeing.
      Guard against AppVeyor losing deps issue
      increase poll timeout as false positives mitigation
      Value of EG(user_exception_handler) should't relive request boundary
      sodium ext: remove function names before exception messages
      sodium ext: update the crypto_kx_*() API to the libsodium one
      Revert "fix macro redifinitions"

commit 06f6eb0e68
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 14:52:28 2017 +0300

    Use zend_ssa_is_no_val_use() instead of zend_has_improper_op1_use()

commit 4b64dbb30d
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 13:07:14 2017 +0300

    Check if instruction may throw exception only for instructions without known side effects.
    Always disable removing ASSIGN and UNSET_VAR that may throw.

commit c5aa1f47cd
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 11:21:07 2017 +0300

    Use existing bit

commit c2af153bae
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 11:10:48 2017 +0300

    Updated Windows build

commit de5e8fc129
Merge: 8c0de53 6595ea3
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 11:10:12 2017 +0300

    Merge branch 'sccp' into dce

    * sccp: (29 commits)
      Use existing bit
      Updated Windows build
      Fixed compilation error
      Remove debug code
      We need to check for the length here too, or we crash and no one likes that! :(
      * Implemented #65187 (exif_read_data/thumbnail: add support for stream resource) * ext/exif now uses FAST_ZPP
      Remove extraneous configure flag
      Revert "remove excessive checks and fix warnings"
      parametrize zip names
      Upgrade bundled PCRE to 8.41
      Updated NEWS file with LDAP changes
      Fixed removing all controls by passing an empty array to ldap_set_option
      Filled in NEWS file with ext/ldap last modifications
      change order, allow to build as shared extension
      restore file deleted by mistake in a merge commit
      Fix segfault in php_stream_context_get_option call
      remove excessive checks and fix warnings
      fix macro redifinitions
      fix symbol availability and ws
      Remove this for now, as not found
      ...

commit 6595ea3420
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 10:27:02 2017 +0300

    Use existing bit

commit f0bfd36cb8
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 10:21:22 2017 +0300

    Updated Windows build

commit a9bd7c89f2
Merge: d1eb5ed 2b7d3fb
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 12 09:51:32 2017 +0300

    Merge branch 'master' into sccp

    * master: (27 commits)
      Fixed compilation error
      Remove debug code
      We need to check for the length here too, or we crash and no one likes that! :(
      * Implemented #65187 (exif_read_data/thumbnail: add support for stream resource) * ext/exif now uses FAST_ZPP
      Remove extraneous configure flag
      Revert "remove excessive checks and fix warnings"
      parametrize zip names
      Upgrade bundled PCRE to 8.41
      Updated NEWS file with LDAP changes
      Fixed removing all controls by passing an empty array to ldap_set_option
      Filled in NEWS file with ext/ldap last modifications
      change order, allow to build as shared extension
      restore file deleted by mistake in a merge commit
      Fix segfault in php_stream_context_get_option call
      remove excessive checks and fix warnings
      fix macro redifinitions
      fix symbol availability and ws
      Remove this for now, as not found
      fix authors
      NEWS for Sodium
      ...

commit 8c0de53e5f
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Jul 11 21:54:36 2017 +0300

    Initial integration of Dead Code Elimination (DCE) and unused variable removing passes, originally developed in https://github.com/nikic/php-src/tree/opt, into DFA optimization pass.

commit d1eb5ede3a
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Jul 11 12:19:11 2017 +0300

    Proper SSA reconstruction for "$a = $a;"

commit 4872d139b5
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Jul 11 11:57:33 2017 +0300

    Replace conditions, that should be always true, by ZEND_ASSERT()

commit 9915b1f5cd
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Jul 11 11:56:51 2017 +0300

    Fixed pass name

commit d26ff1b88d
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Jul 11 11:55:47 2017 +0300

    Don't create identical predecessors

commit 0625fbe32b
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Jul 11 09:36:07 2017 +0300

    Update unreachable blocks.

commit 9d7d409e6a
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Jul 11 09:28:49 2017 +0300

    Keep consistent cfg.map[]

commit 85a86e58b2
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Jul 11 02:36:14 2017 +0300

    Remove unusded phi

commit d5e0f2df4c
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Jul 11 02:35:00 2017 +0300

    Don't clear phi->spources[] too early.

commit a90ed34295
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Jul 10 21:29:39 2017 +0300

    Make SCCP to remove dead live ranges.

commit 320237f3d8
Merge: 63bbed5 7be2637
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Jul 10 17:35:21 2017 +0300

    Merge branch 'master' into sccp

    * master:
      Fixed memory leak introduced by 7cb5bdf64a
      eliminate casts
      remove checks for eol dependencies
      improve test
      Small fix in ext/ldap, Moved vars definitions to the beginning of the block using them
      ZipArchive implements countable, added ZipArchive::count() method

commit 63bbed5e71
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Jul 10 17:01:15 2017 +0300

    Evaluation of few more constant functions

commit 07f45d8a3d
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Jul 10 16:22:47 2017 +0300

    Properly unlinking dead blocks from predecessors/successors and dominators

commit 502002aa6e
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Jul 10 13:33:14 2017 +0300

    Replacel constant JMPZ/NZ/ZNZ by JMP or NOP

commit 3253e61b66
Merge: e7f69f0 161c378
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Jul 10 12:22:39 2017 +0300

    Merge branch 'master' into sccp

    * master:
      Revert "Fixed bug #74878"
      Upgrading note for #74837
      Fixed bug #74837 - NEWS
      Implement Countable for DomNodeList and DOMNamedNodeMap (Request #74837)
      Fix #49649 - Handle property visibility changes on unserialization

commit e7f69f07fc
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Jul 10 12:15:08 2017 +0300

    Prevent compile-time evaluation of implode() with arguments causing run-time warnings

commit 0e882f189a
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Jul 10 11:54:04 2017 +0300

    Constant evaluation of ini_get() for some safe cases

commit 9e36a748b2
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Jul 10 11:13:37 2017 +0300

    Constant evaluation of implode()

commit e73046e266
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Jul 10 10:51:23 2017 +0300

    Fixed uninitialized value

commit f5e2e8e68c
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Jul 10 10:05:37 2017 +0300

    Remove (compact) unused constants after SCCP pass

commit f0b7bb86eb
Merge: e69d4f6 cfacf84
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Jul 10 09:10:00 2017 +0300

    Merge branch 'master' into sccp

    * master: (37 commits)
      #73594 tests only check the extra params if dns_get_record is successful
      Fixed bug #74852 (property_exists returns true on unknown DateInterval property)
      fix uninitialized var
      fix comparison warning
      comply with POSIX signature
      fix warning
      remove some casts
      cleanup casts
      remove useless cast
      eliminate casts
      sync vim mode lines in main
      [ci skip] update NEWS
      [ci skip] update NEWS
      [ci skip] update NEWS
      Fixed bug #74883 SQLite3::__construct() produces "out of memory" exception with invalid flags
      Silent compiler warning
      Fix test
      Deprecated the read_exif_data() alias
      Add myself as exif maintainer
      update libs versions
      ...

commit e69d4f6140
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 7 12:51:41 2017 +0300

    Avoid in-place modification of referenced data

commit 58f7c17978
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 7 12:33:24 2017 +0300

    Use arena for temporary data.

commit 93d3e7ddc2
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 7 11:54:47 2017 +0300

    Made sccp_ctx to be an "extension" of scdf_ctx and remove duplicate data.

commit f810c6f7c4
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 7 11:20:48 2017 +0300

    Improved SSCP integration

commit d17ed887f3
Merge: d90805a 29653da
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Jul 7 10:22:37 2017 +0300

    Merge branch 'master' into sccp

    * master:
      Fixed bug #74873 (Minor BC break: PCRE_JIT changes output of preg_match()).
      Fixed bug #72324 (imap_mailboxmsginfo() return wrong size)
      Fix redefine warnings
      Expand sb's name and capitalize my own
      Write the URL on a new line, so that it is easier copyable

commit d90805a40b
Merge: 2e5e03b fc336c7
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 6 23:07:04 2017 +0300

    Merge branch 'master' into sccp

    * master:
      Added missed dump of "main" script code
      replace the stack var by a macro
      [ci skip] sync NEWS
      minor fix for web announce
      add missing NEWS entry for #74087 and also fix the formatting
      move NEWS entry to the correct place, also bump the version

commit 2e5e03b673
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 6 23:03:41 2017 +0300

    Call info should be removed, but at least we should prevent incorrect stack adjustment.

commit 1ee9110b35
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 6 19:34:43 2017 +0300

    Remove NOP instructions, introduced bvy SCCP.
    This commit discloses unrelated issue caused ext/soap/tests/bug70211.phpt failure.

commit 9a2f50070d
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 6 16:34:02 2017 +0300

    Avoid useless iterations for first SSA variablesi, always marked BOT.

commit c57dd7c6ef
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 6 16:33:46 2017 +0300

    Use reference-counting

commit 90f822d68e
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 6 14:00:22 2017 +0300

    Support for few more opcodes

commit cffee2f7e5
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 6 12:35:13 2017 +0300

    Combined constants substitutaion and dead instruction removing in single pass. This eleminates substitution in dead instructions.

commit f890375c16
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 6 10:34:48 2017 +0300

    Use reference-counting instead of duplication

commit db0cd64dfa
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 6 03:04:27 2017 +0300

    Improved SCDF<->SCCP interface

     - "get_feasible_successors" callback is changed into "mark_feasible_successors" and should mark necessary edges through scdf_mark_edge_feasible()
     - SCDF takes care about OP_DATA instruction
     - SCDF code is re-arranged to avoid repeatable checks

commit e0ad5dd489
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 6 00:55:40 2017 +0300

    Changed representation of "feasible_edges", using one bit per edge.

commit afee3138fe
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jul 6 00:49:56 2017 +0300

    Revert "Don't propagate unused values"

    This reverts commit 84e5bfd430.

commit 84e5bfd430
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 5 23:39:42 2017 +0300

    Don't propagate unused values

commit d4f15b9506
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 5 23:39:10 2017 +0300

    Don't visit the same Phi twice

commit 2558311b4d
Merge: 722a59d 7bb4ae5
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 5 21:51:06 2017 +0300

    Merge branch 'master' into sccp

    * master:
      Fixed final dump "after optimizer"

commit 722a59ddb1
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 5 21:09:29 2017 +0300

    SCCP doesn't support VERIFY_RETURN_TYPE (ext/opcache/tests/bug73789.phpt failure)

commit 7084fade4d
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 5 20:37:21 2017 +0300

    Fixed SSA reconstruction

commit 37ec4e0845
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 5 19:34:46 2017 +0300

    Disable constant propagation for variables that can be modified indirectly

commit 4bb9b6526e
Merge: 6800460 73d5097
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 5 19:17:04 2017 +0300

    Merge branch 'master' into sccp

    * master: (43 commits)
      Keep information about SSA variables, that may be modified indirectly.
      Added constants for known ldap controls OID and tests for ldap_get/set_option for controls
      Added support for controls to ldap_get_option
      [ci skip] sync NEWS
      NEWS for oniguruma
      Patch from the upstream git https://github.com/kkos/oniguruma/issues/60 (CVE-2017-9228)
      Patch from the upstream git https://github.com/kkos/oniguruma/issues/59 (CVE-2017-9229) b690371bbf97794b4a1d3f295d4fb9a8b05d402d Modified for onig 5.9.6
      Patch from the upstream git https://github.com/kkos/oniguruma/issues/58 (CVE-2017-9227)
      Patch from the upstream git https://github.com/kkos/oniguruma/issues/57 (CVE-2017-9224)
      Patch from the upstream git https://github.com/kkos/oniguruma/issues/55 (CVE-2017-9226) b4bf968ad52afe14e60a2dc8a95d3555c543353a Modified for onig 5.9.6 f015fbdd95f76438cd86366467bb2b39870dd7c6 Modified for onig 5.9.6
      valid_symbol_table removed
      Improve fix for #74145
      Fix wddx
      Fix tests
      Fixed bug #74111
      Fix bug #74603 - use correct buffer size
      Fix bug #74651 - check EVP_SealInit as it can return -1
      Update NEWS
      Fix bug #74087
      Fixed parsing of strange formats with mixed month/day and time strings
      ...

commit 680046086c
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 5 16:14:38 2017 +0300

    Support for few more internal functions evaluation

commit 74a29468ef
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 5 13:42:55 2017 +0300

    Disabled evaluation of strpos() with empty needle.

commit e8908946e5
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 5 13:17:30 2017 +0300

    Replace calls to in_array() with constant array by IN_ARRAY instruction after SCCP.

commit 4e8fa2c3dd
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jul 5 00:58:12 2017 +0300

    Initial integration of Sparse Conditional Constant Propagation (SCCP), originally developed in https://github.com/nikic/php-src/tree/opt, into DFA optimization pass.
2017-07-14 14:33:34 +03:00
Dmitry Stogov
fc336c78e7 Added missed dump of "main" script code 2017-07-06 23:06:11 +03:00
Dmitry Stogov
7bb4ae59c3 Fixed final dump "after optimizer" 2017-07-05 21:48:01 +03:00
Dmitry Stogov
acffb7a080 Keep information about SSA variables, that may be modified indirectly. 2017-07-05 19:15:16 +03:00
Nikita Popov
8e0ddc89fe Drop duplicate dtors in update_opN
Per new convention update_opN should no longer dtor on failure.
2017-07-04 21:23:34 +02:00
Dmitry Stogov
0965a4ef9f Check for exceptional cases before actual constant evaluation. 2017-07-04 16:09:28 +03:00
Dmitry Stogov
6276268b77 Separate constants propagation code shatred between "first" and "block" passes into helper functions. 2017-07-04 15:10:33 +03:00
Dmitry Stogov
10dbc0b2e7 Compile/optimisation-time constants can't be circular, but in general may be reference-countable. It's better to use zval_ptr_dtor_nogc() to release them. 2017-07-04 10:43:34 +03:00
Dmitry Stogov
b685991b44 Get rid of old compatibility macros 2017-07-04 09:50:57 +03:00
Bob Weinand
2304bc2aa2 Merge branch 'PHP-7.1' 2017-07-01 11:53:00 +02:00
Bob Weinand
af7bfc71fd Merge branch 'PHP-7.0' into PHP-7.1 2017-07-01 11:52:41 +02:00
Bob Weinand
e3cc15daf2 Fixed bug #74840 (Opcache overwrites argument of GENERATOR_RETURN within finally) 2017-07-01 11:52:03 +02:00
Dmitry Stogov
c23ffaa211 We don't have to use "persistent" heap with PHP-7 HashTable(s). 2017-06-29 09:24:07 +03:00
Tom Van Looy
04fb3f28ff Remove superfluous semicolons 2017-06-26 00:23:25 +02:00
Nikita Popov
272a9f29f5 Merge branch 'PHP-7.1' 2017-06-23 17:33:36 +02:00
Nikita Popov
5b5a92b8b6 Fixed bug #74623 2017-06-23 17:32:45 +02:00
Nikita Popov
4948da178a Make inference robust against infinite loop
Right now, if narrowing occurs on non-debug builds, inference can
easily go into an infinite loop. Prevent this, and add a pointer
that this should be reported as a bug.
2017-06-23 17:07:44 +02:00
Dmitry Stogov
f25ecdacf8 shutdown_executor() refactoring (reuse opcache fast request shutdown code) 2017-06-22 01:45:28 +03:00
Dmitry Stogov
9b201aec07 Setting CG(unclean_shutdown) in fast shutdown doesn't make a lot of sense (it was set to prevent memory leak messages, but we doesn't check memory leaks in RELEASE build anyway). 2017-06-21 16:09:21 +03:00
Dmitry Stogov
c16f954ff1 Clear alocated memory blocks, only if this is really necessary. 2017-06-21 10:37:54 +03:00
Anatol Belski
3fc1993cfc Merge branch 'PHP-7.1'
* PHP-7.1:
  Split requested size as expected by CreateFileMapping.
2017-06-20 15:45:34 +02:00
Anatol Belski
67f063e3ac Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0:
  Split requested size as expected by CreateFileMapping.
2017-06-20 15:45:05 +02:00
Anatol Belski
6a854e2740 Split requested size as expected by CreateFileMapping.
Thus fixing ext\opcache\tests\log_verbosity_bug.phpt fails on 64-bit.
2017-06-20 15:40:25 +02:00
Dmitry Stogov
db4561bfff Introduced "zif_handler" type (zif = zend internal function). 2017-06-08 16:52:39 +03:00
Dmitry Stogov
68dc754998 Avoid string reallocations in html_entity_decode() and htmlspecialchars_decode() 2017-06-06 16:09:26 +03:00
Dmitry Stogov
81a6ee9aa4 Avoid string reallocations in preg_quote() 2017-06-06 13:56:19 +03:00
Nikita Popov
e2a2e49063 Merge branch 'PHP-7.1' 2017-06-02 23:36:44 +02:00
Nikita Popov
e9ff1fac85 Revert "merge PR #2290: enable opcache in CLI in 7.1+"
This reverts commit 71fe529afc.

Without the file cache (which is not enabled by default), this has
non-trivial impact on the startup time. It also significantly
increases the baseline memory usage of PHP on CLI.
2017-06-02 23:36:20 +02:00
Dmitry Stogov
a0cc6d426f New optimization pattern 2017-05-31 09:53:10 +03:00
Dmitry Stogov
da01fa3897 Merge branch 'PHP-7.1'
* PHP-7.1:
  Fixed wrong condition
  ext/ldap/test: Test that ldap_connect() uses defaults from ldap.conf (openldap)
  ext/ldap: Allow default host from ldap.conf to work.
2017-05-31 00:41:12 +03:00
Dmitry Stogov
316aaca155 Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0:
  Fixed wrong condition
2017-05-31 00:40:57 +03:00
Dmitry Stogov
77cbf8a657 Fixed wrong condition 2017-05-31 00:40:33 +03:00
Dmitry Stogov
6043f76ad7 Added ZEND_FUNC_NUM_ARGS, ZEND_FUNC_GET_ARGS instructions, to implement corresponding builtin functions.
Special optimisation for "array_slice(INT, func_get_args())" pattern.
2017-05-30 13:23:17 +03:00
Xinchen Hui
93a5783095 Merge branch 'PHP-7.1'
* PHP-7.1:
  Update NEWS
  Fixed bug #74663 (Segfault with opcache.memory_protect and validate_timestamp)
2017-05-27 22:43:53 +08:00
Xinchen Hui
19befb1ca2 Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0:
  Fixed bug #74663 (Segfault with opcache.memory_protect and validate_timestamp)
2017-05-27 22:43:23 +08:00
Xinchen Hui
60912e66c8 Fixed bug #74663 (Segfault with opcache.memory_protect and validate_timestamp) 2017-05-27 22:42:27 +08:00
Dmitry Stogov
f00d1c72b4 Added ZEND_GET_CLASS, ZEMD_GET_CALLED_CLASS, ZEND_GET_TYPE instructions, to implement corresponding builtin functions. 2017-05-25 18:41:28 +03:00
Dmitry Stogov
cd953269d3 Added ZEND_COUNT instruction, to implement corresponding builtin. 2017-05-25 12:52:34 +03:00
Dmitry Stogov
89b3c9f647 Optimizer support for ZEND_IN_ARRAY 2017-05-24 23:37:35 +03:00
Dmitry Stogov
372397f518 Updated func info 2017-05-18 19:24:30 +03:00
Xinchen Hui
46b7287cc3 Merge branch 'PHP-7.1'
* PHP-7.1:
  Added test for bug #74596
2017-05-17 22:43:14 +08:00
Xinchen Hui
d3e3bc611a Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0:
  Added test for bug #74596
2017-05-17 22:43:03 +08:00
Xinchen Hui
e347b2ded6 Added test for bug #74596 2017-05-17 22:42:18 +08:00
Dmitry Stogov
a151d614ba Added missing "successors_count" update. 2017-05-17 12:52:36 +03:00
Xinchen Hui
62a0342531 Merge branch 'PHP-7.1'
* PHP-7.1:
  Fixed bug #74596 (SIGSEGV with opcache.revalidate_path enabled)
2017-05-16 13:22:51 +08:00
Xinchen Hui
e04b91e6e2 Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0:
  Fixed bug #74596 (SIGSEGV with opcache.revalidate_path enabled)
2017-05-16 13:22:43 +08:00
Xinchen Hui
89dd7fb328 Fixed bug #74596 (SIGSEGV with opcache.revalidate_path enabled)
Yeah, no test script is provided.. I got some troubles to make a one
2017-05-16 13:22:08 +08:00
Xinchen Hui
8cd870a9e0 Fixed hash val calculating 2017-04-19 17:15:34 +08:00
Xinchen Hui
b78b15e880 Fixed test 2017-04-18 12:50:14 +08:00
Xinchen Hui
187f42149d Improve fix for #74456 2017-04-18 12:47:53 +08:00
Xinchen Hui
0a27a5ba8c Merge branch 'PHP-7.1' of git.php.net:/php-src into PHP-7.1
* 'PHP-7.1' of git.php.net:/php-src:
  Fix loop identification
2017-04-17 20:27:07 +08:00
Xinchen Hui
1837eea66d Merge branch 'PHP-7.1'
* PHP-7.1:
  Fixed bug #74456 (Segmentation error while running a script in CLI mode)
2017-04-17 20:26:57 +08:00
Xinchen Hui
d6315c2fbb Fixed bug #74456 (Segmentation error while running a script in CLI mode)
Instead of make update_op1_by_const supports FETCH_LIST(CASE), I think
disable it is more safe for 7.1
2017-04-17 20:24:39 +08:00
Nikita Popov
4cd5e6816b Drop dead zend_optimizer_lookup_cv() function 2017-04-17 12:20:25 +02:00
Nikita Popov
88c85cbd5c Merge branch 'PHP-7.1' 2017-04-17 12:19:46 +02:00
Nikita Popov
abf16c18c7 Fix loop identification
When assigning loop headers, we should treat already detected
loops as collapsed to their loop header, instead of ignoring them.

This fixes the loop header of BB2 in mandel2 if live-range CFG
splitting is enabled.
2017-04-17 12:17:32 +02:00
Anatol Belski
2a16ba04dc Merge branch 'PHP-7.1'
* PHP-7.1:
  improve/fix error handling
2017-04-15 19:37:12 +02:00
Anatol Belski
039ef0143b Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0:
  improve/fix error handling
2017-04-15 19:35:13 +02:00
Anatol Belski
ca543ff01c improve/fix error handling
GetLastError() should not be called, if the function didn't fail.
2017-04-15 19:32:04 +02:00
Nikita Popov
7cd7305b1b Merge branch 'PHP-7.1' 2017-04-15 12:36:02 +02:00
Nikita Popov
00c6ce0e00 Merge branch 'PHP-7.0' into PHP-7.1 2017-04-15 12:35:53 +02:00
Nikita Popov
0beccc51f1 Fix compact_literals of INIT_METHOD_CALL with CONST op1 2017-04-15 12:35:09 +02:00
Nikita Popov
7f5d47dfd1 Merge branch 'PHP-7.1' 2017-04-15 01:40:59 +02:00
Nikita Popov
6c2222796b Improve fix for bug #74442
Make the check less conservative to be consistent with the other
cases.
2017-04-15 01:39:33 +02:00
Rasmus Lerdorf
e42948e6e3 Credit goes to Eric Norris for this one 2017-04-14 15:49:05 -07:00
Rasmus Lerdorf
d80df7a8bf Credit goes to Eric Norris for this one 2017-04-14 15:48:24 -07:00
Nikita Popov
feb828ffb0 Merge branch 'PHP-7.1' 2017-04-14 22:20:48 +02:00
Nikita Popov
2f22dffd1a Fixed bug #74442 2017-04-14 22:20:32 +02:00
Nikita Popov
81b4bfcb96 Merge branch 'PHP-7.1' 2017-04-14 22:04:07 +02:00
Nikita Popov
3ffe2cd251 Fixed bug #74431
If the last instruction in a block is a NOP, then `new_opline`
here won't be a copy of `opline`, it will be a copy of the last
non-NOP opline. Avoid performing a spurious update by explicitly
checking for NOP.
2017-04-14 22:03:06 +02:00
ekinhbayar
5d095f80c9 Test for bug 74431 2017-04-14 21:26:02 +02:00
Nikita Popov
07fe8616e6 Set flags on the right block 2017-04-11 00:04:07 +02:00
Nikita Popov
a4c7c55c0b Move call/recv splitting into correct branch 2017-04-10 23:51:27 +02:00
Nikita Popov
797ee05a3c Merge branch 'PHP-7.1' 2017-04-10 22:26:42 +02:00