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