Commit Graph

780 Commits

Author SHA1 Message Date
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
Dmitry Stogov
8600801c1f Eliminate identical comparisons 2022-09-05 14:41:38 +03:00
Dmitry Stogov
fb0d5fd87c Improve GUARD instructions support 2022-09-02 13:54:31 +03:00
Dmitry Stogov
c865599451 Fix code generation 2022-09-02 13:12:58 +03:00
Dmitry Stogov
2c2a9716ab Use sorted list to search for identical constants 2022-09-02 11:08:55 +03:00
Dmitry Stogov
6c7889ebd1 Simplify IF->IF_TRUE/IF_FALSE search 2022-09-02 11:00:40 +03:00
Dmitry Stogov
69a3d6fd27 Verify type compatibility 2022-09-02 09:50:38 +03:00
Dmitry Stogov
5034f8dedb Allow genearion of TEST MEM, IMM 2022-09-01 22:25:29 +03:00
Dmitry Stogov
9b558e544f Allow fusion of single address calculation instruction into several load/store instructions
Previously, if calculated address were used in few places we kept it in a register (without
fusion).
2022-09-01 20:40:29 +03:00
Dmitry Stogov
756a1afc82 Better register allocation support for address and load fusion 2022-09-01 19:19:01 +03:00
Dmitry Stogov
d29a51a979 Remove unused "flags" 2022-09-01 13:04:54 +03:00
Dmitry Stogov
dd271af057 Speedup local scheduling by loop unrolling 2022-09-01 12:48:10 +03:00
Dmitry Stogov
3a20a8130c JMP optimization. Better ENETR block placement. 2022-08-31 14:29:34 +03:00
Dmitry Stogov
5e4503b624 Fix JMP optimization for MERGE/N and last basic block 2022-08-31 00:01:15 +03:00
Dmitry Stogov
32198c00b7 Reimplement JMP optimization 2022-08-30 23:15:20 +03:00
Dmitry Stogov
5afa116d34 Get rid of MREF macros 2022-08-30 16:15:30 +03:00
Dmitry Stogov
80192093e5 Swap operands of FP comparison to produce the better code 2022-08-30 15:52:55 +03:00
Dmitry Stogov
e4be1de649 Allow LOAD/STORE fusion for ADD_OV/SUB_OV 2022-08-30 12:23:20 +03:00
Dmitry Stogov
0596de2291 Fuse LOAD into IMULL/3 2022-08-30 11:26:38 +03:00
Dmitry Stogov
e87e71b092 cleanup 2022-08-30 10:23:56 +03:00
Dmitry Stogov
11c03dbfb3 Fix call stack alignment and fastcall support 2022-08-30 00:42:06 +03:00
Dmitry Stogov
fd8539e17d Eliminate TEST after ADD/SUB/AND/OR/XOR 2022-08-29 22:22:30 +03:00
Dmitry Stogov
c69d970ca2 Add missing "else" 2022-08-26 11:50:28 +03:00
Dmitry Stogov
e023a18749 Test part of the register to avoid test with mask 2022-08-26 11:48:13 +03:00