Commit Graph

549 Commits

Author SHA1 Message Date
Dmitry Stogov
9fc66b37c9 Improve ir_assign_virtual_registers() 2022-11-16 00:40:14 +03:00
Dmitry Stogov
bd80dd4700 ir_compute_live_ranges() micro-optimizations 2022-11-16 00:40:14 +03:00
Dmitry Stogov
f72e6dc388 Avoid bitset clearing and copying 2022-11-16 00:40:14 +03:00
Dmitry Stogov
f72bb45e07 Remove useless condition and keep "visited" bitset only for debug build 2022-11-16 00:40:14 +03:00
Dmitry Stogov
9f777661b5 Improve DESSA
Instead o clearing a huge array use an additional loop to clear only the necessary entries.
2022-11-16 00:40:14 +03:00
Dmitry Stogov
7e710d5e91 Speedup coalescing 2022-11-16 00:40:14 +03:00
Dmitry Stogov
f11c8a3d01
Merge pull request #2 from jserv/fix-macos-build
Fix build on macOS
2022-11-12 11:58:31 +03:00
Jim Huang
af75775bac Fix build on macOS
Corresponding compilation errors:

ir_private.h:11:10: fatal error: 'malloc.h' file not found

ir_gdb.c:162:17: error: implicit declaration of function 'offsetof' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
        .shofs       = offsetof(ir_gdbjit_obj, sect),
2022-11-12 01:24:33 +08:00
Dmitry Stogov
93172a487d Add special case for functions with single Basic Block 2022-11-11 17:43:44 +03:00
Dmitry Stogov
406b08030d Revisit and optimize GCM implementation
Use two different queues to schedule early and late
2022-11-11 16:17:56 +03:00
Dmitry Stogov
6fdce28d65
Merge pull request #1 from jserv/fix-build
Fix build with GCC prior to 10
2022-11-11 15:23:27 +03:00
Jim Huang
c4017eab4b Fix build with GCC prior to 10 2022-11-11 18:05:05 +08:00
Dmitry Stogov
b56f1f5298 Refactor CFG construction algorithm to mark all BB starts in two passes.
First we perform a backwad DFS search from "stop" nodes. This pass may
leak some CFG paths ended by infinite loops. To support these paths we
record their possible roots and perform forward DFS search starting from
them.
2022-11-11 10:25:59 +03:00
Dmitry Stogov
47ddea00ac Use better conditions 2022-11-11 02:56:16 +03:00
Dmitry Stogov
a4b09dd3ce Improve CFG builder 2022-11-11 00:19:17 +03:00
Dmitry Stogov
27fe71c344 Improve CFG builder and reuse ctx->cfg_map for GCM 2022-11-10 22:45:12 +03:00
Dmitry Stogov
78cc14aca9 Fix ir_worklist_clear() 2022-11-10 22:44:29 +03:00
Dmitry Stogov
2e7f567feb Add a reference to PHP development branch 2022-11-10 13:24:17 +03:00
Dmitry Stogov
02f8b2508f Add ir_unique_const_addr() to allow external hashing 2022-11-10 00:24:33 +03:00
Dmitry Stogov
17c603eeed CFG construction optimization 2022-11-09 21:56:31 +03:00
Dmitry Stogov
c8dc4e9e74 Move ir_input_edges_count(phi) out of the loop, because all PHIs inherit their arity from MERGE/LOOP_BEGIN 2022-11-09 21:54:01 +03:00
Dmitry Stogov
889f7741d4 Reorder control instruction according to their kind
(BB_START, BB_END, BB_TERM)
2022-11-09 21:52:08 +03:00
Dmitry Stogov
142cdb4b8b SCCP cleanup and optimization 2022-11-09 13:24:37 +03:00
Dmitry Stogov
f484b5d16b micro-optimization 2022-11-09 13:23:30 +03:00
Dmitry Stogov
6507758530 Use deines instead of magic constants 2022-11-09 13:13:15 +03:00
Dmitry Stogov
8660c3cd8b micro-optimization 2022-11-09 09:12:16 +03:00
Dmitry Stogov
3535fd2fc4 Fix compilation warnings and signed/unsigned mess 2022-11-08 23:09:35 +03:00
Dmitry Stogov
cc73788981 Fix compilation warnings 2022-11-08 18:17:29 +03:00
Dmitry Stogov
bac5fc340a typo 2022-11-08 16:24:53 +03:00
Dmitry Stogov
582c62b83b Verify consistecy of use_lists 2022-11-08 16:08:31 +03:00
Dmitry Stogov
4c536aae20 Extend SCCP to perform Dead Load Elimination 2022-11-08 15:39:00 +03:00
Dmitry Stogov
551ea4d2a0 Fix incorrect RSTORE flags 2022-11-08 15:25:01 +03:00
Dmitry Stogov
37dececa71 Add more tests (8 tests ara failed on 32-bit x86) 2022-11-08 11:56:22 +03:00
Dmitry Stogov
cc56f12f13 Add LICENSE and copyright notices 2022-11-08 11:32:46 +03:00
Dmitry Stogov
2ff0617db6 Perform iterative folding and DCE as a final pass of SCCP 2022-11-08 00:41:08 +03:00
Dmitry Stogov
5ba4050248 cleanup SCCP 2022-11-08 00:37:28 +03:00
Dmitry Stogov
ef6b6c3e26 Prevent CSE for (ADD/SUB/MUL)_OV 2022-11-03 15:58:51 +03:00
Dmitry Stogov
56c22a205f Constant folding for ADD_OV/SUB_OV 2022-11-03 14:30:49 +03:00
Dmitry Stogov
22385c1528 Allocate and reuse spill slots using simple linear-scan (without holes) 2022-11-02 21:53:05 +03:00
Dmitry Stogov
0a5bb4a571 Better condition 2022-11-02 21:28:56 +03:00
Dmitry Stogov
802ec945ad Reorder conditions for the most common case 2022-11-02 16:27:26 +03:00
Dmitry Stogov
364669a0a1 Add/fix comments 2022-11-02 16:27:16 +03:00
Dmitry Stogov
d619efa0ad Add support for ENDBR 2022-10-27 12:58:04 +03:00
Dmitry Stogov
66330273b1 Add "endbr" instruction 2022-10-27 11:13:50 +03:00
Dmitry Stogov
3af9e1a062 Move some common code into ir_emit.c 2022-10-26 22:52:19 +03:00
Dmitry Stogov
1b84570aa3 Intoduce ir_emit.c that shuould keep common part for different targets 2022-10-26 22:06:07 +03:00
Dmitry Stogov
62c981a091 remove hardcoded dependencies 2022-10-26 21:26:24 +03:00
Dmitry Stogov
74debb0bf4 Add "ir_load.c" to allow build without llk.php and initial multi-platform support 2022-10-26 19:52:14 +03:00
Dmitry Stogov
95e6cafe7c cleanup 2022-10-26 16:06:16 +03:00
Dmitry Stogov
9b7835a05e Use ir_emit_exitgroup() helper API instead of IR_EXITGROUP node 2022-10-26 15:46:59 +03:00