Dmitry Stogov
ae19ad7c79
Eliminate unnecessary loops
2022-11-18 12:47:15 +03:00
Dmitry Stogov
00395f0a23
Cleanup: separate ir_phi_input_number() function
2022-11-18 10:11:16 +03:00
Dmitry Stogov
3e3746d5cb
Refactor API that expose target CPU register constraints for register allocator
2022-11-17 23:30:35 +03:00
Dmitry Stogov
baa9f44ca2
RLOAD and VAR don't have inputs
2022-11-16 19:21:52 +03:00
Dmitry Stogov
3471060709
Skip END and LOOP_END
2022-11-16 19:06:09 +03:00
Dmitry Stogov
c0e1216361
Improve ir_assign_virtual_registers()
2022-11-16 18:43:34 +03:00
Dmitry Stogov
ba97919e9e
Improve ir_assign_virtual_registers()
2022-11-16 18:09:49 +03:00
Dmitry Stogov
118fec9bf7
Fix SNAPSHOT handling
2022-11-16 15:27:34 +03:00
Dmitry Stogov
7015050f22
Simplify CMP_AND_BRANCH and GUARD_CMP via introducing SKIP_CMP rule
2022-11-16 14:09:04 +03:00
Dmitry Stogov
05127b1b13
Remove duplicate code and allow load fusion of IR_SHIFT.op2
2022-11-16 13:20:58 +03:00
Dmitry Stogov
673779ba6a
Use IR_COPY_INT/FP rule instead of IR_COPY op
2022-11-16 12:55:40 +03:00
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