Commit Graph

403 Commits

Author SHA1 Message Date
Dmitry Stogov
eacb9c1528 Avoid useless mov 2022-09-20 00:12:06 +03:00
Dmitry Stogov
5fdb89aee1 MOD may be converted to AND only for positive op1 2022-09-19 23:22:11 +03:00
Dmitry Stogov
5123080533 Fixed register allocation for MUL_OV 2022-09-19 22:10:29 +03:00
Dmitry Stogov
dc0393320e Fix floating point comparison 2022-09-19 21:55:08 +03:00
Dmitry Stogov
76ad4e59a6 Fix live range 2022-09-16 12:47:03 +03:00
Dmitry Stogov
0eee478277 Support for always TRUE/FALSE guards 2022-09-16 12:29:55 +03:00
Dmitry Stogov
b519f80da5 More accurte fusion of address calculation 2022-09-16 12:05:36 +03:00
Dmitry Stogov
86bec14bc2 Fixed fuse loading in BITCAST 2022-09-16 10:19:31 +03:00
Dmitry Stogov
4a8ebd5be5 Fuse function address load into CALL/TAILCALL without arguments 2022-09-16 09:54:49 +03:00
Dmitry Stogov
57a9731179 Fix spill load code 2022-09-15 23:24:28 +03:00
Dmitry Stogov
9aac7e76af Requre opearnad to be in register 2022-09-15 22:18:35 +03:00
Dmitry Stogov
a0c9405ae7 Fixed memory leak 2022-09-15 20:32:20 +03:00
Dmitry Stogov
b549d98aba The second operand for MEM_BINOP_INT must be in a register 2022-09-15 20:29:30 +03:00
Dmitry Stogov
8a05b4ddeb Make ADDR to be compatible with U64 or U32 2022-09-15 18:01:32 +03:00
Dmitry Stogov
e6f6e92d66 Improve spill code fusion 2022-09-15 17:52:28 +03:00
Dmitry Stogov
367e47ac30 Support for preallocated stack (ZEND_VM_HYBRID_JIT_RED_ZONE_SIZE in PHP VM) 2022-09-15 15:39:15 +03:00
Dmitry Stogov
ad59556d85 Add support for binding IR nodes to "external" spill slots (e.g. PHP VM stack slots) 2022-09-15 15:26:43 +03:00
Dmitry Stogov
dce017f0ed Replace calloc() by malloc() 2022-09-15 11:57:01 +03:00
Dmitry Stogov
b344d2ee0f Remove useless memset() 2022-09-15 11:24:50 +03:00
Dmitry Stogov
305a581ae6 Add "Do not edit!" comments 2022-09-15 09:07:41 +03:00
Dmitry Stogov
d4cd0d6eba Better interval splitting 2022-09-15 01:50:25 +03:00
Dmitry Stogov
ccb756321a Fix incorrect unreachable code detection 2022-09-15 00:04:26 +03:00
Dmitry Stogov
ee05e68052 Fix mistakes in constant conversion folding rules 2022-09-15 00:01:20 +03:00
Dmitry Stogov
96234f5257 Take into account ENTRY nodes, but prefer paths from START 2022-09-14 23:59:54 +03:00
Dmitry Stogov
a80fac2cab Add assertion if there are no common antecessor
(this is possible for code with multiple EMTRY-es)
2022-09-14 17:30:11 +03:00
Dmitry Stogov
5f4b42155f ctx->rules[] is valid only for non CONST IR reference 2022-09-14 15:54:24 +03:00
Dmitry Stogov
c249ccd7ff Fixed possible invalid write into "prev_insn" after buffer reallocation in ir_next_const() 2022-09-14 15:37:45 +03:00
Dmitry Stogov
11db21a98c Allow SCCP to grow use_lists (through reallocation) 2022-09-14 15:14:18 +03:00
Dmitry Stogov
cdc34ae22b Prohibit swapping of operands when the first operand is constant 2022-09-14 14:28:57 +03:00
Dmitry Stogov
14ffff68dc Fix SCCP problems 2022-09-14 14:27:52 +03:00
Dmitry Stogov
75ce65ce65 Fix verifier 2022-09-13 21:53:27 +03:00
Dmitry Stogov
5e1e064338 Remove PHP related exceptional case 2022-09-13 14:01:37 +03:00
Dmitry Stogov
5aad53388d Fix IR checker 2022-09-13 12:44:59 +03:00
Dmitry Stogov
bab62d42c9 Fix assertion 2022-09-13 12:44:08 +03:00
Dmitry Stogov
e833a1647b Move code to remove TERMINATOR node from the terminator list 2022-09-13 12:42:41 +03:00
Dmitry Stogov
f41a256af4 Verify forward edges between control nodes 2022-09-12 23:29:25 +03:00
Dmitry Stogov
a998590dfb Fix SCCP support for IF with integer and floating point condition 2022-09-12 14:53:33 +03:00
Dmitry Stogov
dee45adc8c Fix incorrect bindings and ws 2022-09-08 10:50:07 +03:00
Dmitry Stogov
05bc456c6a Move base regester selection code into ir_ref_spill_slot() 2022-09-07 23:47:30 +03:00
Dmitry Stogov
2677299bbd Fix invalid type 2022-09-07 22:21:12 +03:00
Dmitry Stogov
443ca46958 Fix GCM.
PHI nodes must be pinned together with CONTROL nodes, before any other DATA nodes.
2022-09-07 17:14:22 +03:00
Dmitry Stogov
a2f151aa0d Use original link 2022-09-07 10:17:29 +03:00
Dmitry Stogov
65f439f198 Turn ir_addrtab into more general ir_hashtab 2022-09-07 00:04:02 +03:00
Dmitry Stogov
fd2cb71d7f Add README.md 2022-09-06 19:11:14 +03:00
Dmitry Stogov
b68c4db601 Don't fuse LOAD into instruction in diffrent basic block 2022-09-06 14:01:35 +03:00
Dmitry Stogov
76028e8855 Fix compilation warnings 2022-09-05 22:43:27 +03:00
Dmitry Stogov
7f703fb176 remove brackets 2022-09-05 22:03:30 +03:00
Dmitry Stogov
d5f73bf388 Skip op1 of CONTROL nodes 2022-09-05 22:00:00 +03:00
Dmitry Stogov
e0e5838a4b GCM optimization 2022-09-05 21:26:27 +03:00
Dmitry Stogov
8fd8913fcc Use loop only for MERGE and LOOP_BEGIN 2022-09-05 19:21:07 +03:00