Dmitry Stogov
bd44c565b1
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Added test
Fix type inference for assign to string offset with invalid index.
2022-01-10 16:06:08 +03:00
Dmitry Stogov
8e5f54ed0c
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix type inference for assign to string offset with invalid index.
2022-01-10 16:05:01 +03:00
Dmitry Stogov
3319f17650
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix reference contig inference
2021-12-28 10:02:48 +03:00
Dmitry Stogov
8862e23098
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix reference contig inference
2021-12-28 10:00:14 +03:00
Dmitry Stogov
2759e6bc69
Fixed assertion when check "instanceof" on unlinked class
2021-12-27 12:02:13 +03:00
Nikita Popov
206d80e11a
Reuse get_class_entry_from_op1() helper
...
Export and reuse this helper in places that fetch a class entry
from op1.
2021-12-25 22:18:50 +01:00
Nikita Popov
2cf93032ee
Sink op_array scope case into get_class_entry()
...
This handles references to the current class through its name
rather than self (and for cases where is is not linked yet and
thus not covered by the context lookup). Rather than handling this
only for FETCH_CLASS_CONSTANT optimization, integrate this into
the generic get_class_entry() utility.
2021-12-25 21:51:29 +01:00
Dmitry Stogov
6b60dc29de
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix type inference for INIT_ARRAY with invalid index
2021-12-20 11:46:45 +03:00
Dmitry Stogov
c8d10a8243
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix type inference for INIT_ARRAY with invalid index
2021-12-20 11:46:36 +03:00
Dmitry Stogov
bdcef24f4b
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Remove range inference for booleans.
2021-12-10 14:44:21 +03:00
Dmitry Stogov
cfcee97ad6
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Remove range inference for booleans.
2021-12-10 14:33:36 +03:00
Dmitry Stogov
ebb7b173b0
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix refcount inferemce ($a += $a returns old array with RCN)
2021-12-06 11:32:02 +03:00
Dmitry Stogov
4ed10f3d47
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix refcount inferemce ($a += $a returns old array with RCN)
2021-12-06 11:31:51 +03:00
Dmitry Stogov
c2aea6e805
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fix incorrect reference counting inference
2021-11-30 13:00:13 +03:00
Dmitry Stogov
3564001502
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
JIT: Fix incorrect reference counting inference
2021-11-30 13:00:04 +03:00
Dmitry Stogov
e1baef1835
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fixed type inference (it's safe to ignore reference counting narrowing)
2021-11-29 23:40:49 +03:00
Dmitry Stogov
2d3ea98624
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fixed type inference (it's safe to ignore reference counting narrowing)
2021-11-29 23:39:37 +03:00
Dmitry Stogov
8cdead1568
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fix exception handling when next array element is already occupied
2021-11-29 21:57:38 +03:00
Dmitry Stogov
23c5a6fd16
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
JIT: Fix exception handling when next array element is already occupied
2021-11-29 21:57:29 +03:00
Dmitry Stogov
ee38e3ac37
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Disable type narrowing optimization when we contruct SSA for JIT
2021-11-29 15:54:53 +03:00
Dmitry Stogov
c6e895aec2
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Disable type narrowing optimization when we contruct SSA for JIT
2021-11-29 15:53:16 +03:00
Nikita Popov
902d64390e
Deprecate implicit dynamic properties
...
Writing to a proprety that hasn't been declared is deprecated,
unless the class uses the #[AllowDynamicProperties] attribute or
defines __get()/__set().
RFC: https://wiki.php.net/rfc/deprecate_dynamic_properties
2021-11-26 14:10:11 +01:00
Dmitry Stogov
7dcf853235
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fixed incorrect narrowing to double
2021-11-25 15:16:03 +03:00
Dmitry Stogov
b1a1ed380f
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fixed incorrect narrowing to double
2021-11-25 15:15:01 +03:00
Dmitry Stogov
35786e321b
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fixed incorrect refcountion inference for BW_NOT
2021-11-25 13:53:35 +03:00
Dmitry Stogov
ecc4d1326b
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fixed incorrect refcountion inference for BW_NOT
2021-11-25 13:53:26 +03:00
Dmitry Stogov
b976e75def
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fixed reference-counting inference
2021-11-15 10:40:51 +03:00
Dmitry Stogov
fb582f4230
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
JIT: Fixed reference-counting inference
2021-11-15 10:40:35 +03:00
Dmitry Stogov
b7f19f2674
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fixed incorrect reference counter inference
2021-11-08 20:55:09 +03:00
Dmitry Stogov
9bd490dc33
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fixed incorrect reference counter inference
2021-11-08 20:54:45 +03:00
Dmitry Stogov
e465218e35
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fixed type inference for FETCH_DIM_W without use
2021-11-03 19:45:42 +03:00
Dmitry Stogov
22a171a0b5
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fixed type inference for FETCH_DIM_W without use
2021-11-03 19:45:30 +03:00
Dmitry Stogov
bcef615959
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fixed incorrect assumption about reference counting
2021-11-01 20:29:27 +03:00
Dmitry Stogov
d4a7e4d1ff
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fixed incorrect assumption about reference counting
2021-11-01 20:28:33 +03:00
Nikita Popov
b4f2b24430
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Handle FETCH_DIM_R after FETCH_DIM_FUNC_ARG in inference
2021-11-01 14:27:22 +01:00
Nikita Popov
a89546d8b3
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Handle FETCH_DIM_R after FETCH_DIM_FUNC_ARG in inference
2021-11-01 14:27:14 +01:00
Nikita Popov
b41adb16cd
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix range inference hang
2021-11-01 12:32:15 +01:00
Nikita Popov
3d38960979
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix range inference hang
2021-11-01 12:32:04 +01:00
Nikita Popov
b743cd72d0
Fix inference if FETCH_DIM_W user optimized away
...
In this case the user may be a FREE.
Also add the test file that I forgot in
3ce472d1a6
.
2021-10-21 09:58:07 +02:00
Dmitry Stogov
176c319109
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fixed type inference for COPY_TMP
2021-10-11 16:56:49 +03:00
Dmitry Stogov
1208fe932a
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fixed type inference for COPY_TMP
2021-10-11 16:56:40 +03:00
Dmitry Stogov
f440894d9f
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fixed type inference (ASSIGN_OP with typed reference may cause type conversion)
2021-10-11 10:50:15 +03:00
Dmitry Stogov
04064187c2
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fixed type inference (ASSIGN_OP with typed reference may cause type conversion)
2021-10-11 10:50:06 +03:00
Nikita Popov
aa2f8311c6
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix array cast type inference wrt packed arrays
2021-10-06 10:51:30 +02:00
Nikita Popov
3661c1932c
Fix array cast type inference wrt packed arrays
...
Use KEY_LONG instead of PACKED if it's possible for the array to
be empty. It won't be packed in that case.
Fixes oss-fuzz #39650 .
2021-10-06 10:50:44 +02:00
Nikita Popov
5bf088f6eb
Move TYPE_CHECK handling from sccp to inference
...
The handling of TYPE_CHECK makes for an awkward special case,
because it is determined outside the usual SCCP framework. Instead
move the logic into type inference (to infer a more specific
may_be_true or may_be_false if possible). This will get picked up
by SCCP through the existing logic to make use of type and range
information.
However, this also requires us to make use of type info in
feasible edge marking, otherwise we would regress existing
optimization power.
2021-10-01 15:56:22 +02:00
Nikita Popov
e7a0c5b8c8
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix inference for INIT_ARRAY with illegal offset type
2021-09-29 11:09:22 +02:00
Nikita Popov
944d653b3d
Fix inference for INIT_ARRAY with illegal offset type
...
Extract assign_dim_array_result_type() helper that can be reused
for INIT_ARRAY and implements all this logic correctly.
Fixes oss-fuzz 5156868775870464.
2021-09-29 11:09:04 +02:00
Nikita Popov
8b7874b262
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix ASSIGN_DIM result inference with typed refs
Remove outdated code in ASSIGN_DIM type inference
2021-09-28 14:14:41 +02:00
Nikita Popov
69eb6e04a7
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix ASSIGN_DIM result inference with typed refs
Remove outdated code in ASSIGN_DIM type inference
2021-09-28 14:14:29 +02:00