Dmitry Stogov
|
3de6c5126a
|
Avoid code generation for useless loads and stores
|
2023-06-07 14:43:16 +03:00 |
|
Dmitry Stogov
|
186dc6b0a6
|
Fixed GH issue #33: IR program failed to compile with "-O0" "-S" options
|
2023-06-05 18:22:12 +03:00 |
|
Dmitry Stogov
|
4e01e7251e
|
Implemented support for veneers on AArch64
|
2023-06-02 00:49:32 +03:00 |
|
Dmitry Stogov
|
87f2fc7f69
|
Fixed typo
|
2023-05-29 15:52:17 +03:00 |
|
Dmitry Stogov
|
20b9a7513c
|
Fixed missing label
|
2023-05-26 09:08:57 +03:00 |
|
Dmitry Stogov
|
2a80257535
|
Support for more C escape sequences
|
2023-05-22 19:51:19 +03:00 |
|
Dmitry Stogov
|
d3640495a2
|
Ceanup ir_compute_live_ranges() implementation
|
2023-05-19 12:34:54 +03:00 |
|
Dmitry Stogov
|
5c2023fd7f
|
Avoid live range constrction for VARs
|
2023-05-18 21:00:57 +03:00 |
|
Dmitry Stogov
|
477dbf7d76
|
Avoid live range constrction for RLOAD with fixed registers
|
2023-05-18 13:37:12 +03:00 |
|
Dmitry Stogov
|
c9fa8dfebd
|
Fixed SSA deconstruction
Previously we performed parallel copy for virtual registers, now we do
the same for the target CPU registers.
|
2023-05-17 22:37:45 +03:00 |
|
Dmitry Stogov
|
1bbee7b9da
|
Get rid of ir_live_interval.top
|
2023-04-28 09:49:12 +03:00 |
|
Dmitry Stogov
|
60802d942f
|
Fix previous commit. We still need a temporary register for indirect calls.
|
2023-04-26 14:10:58 +03:00 |
|
Dmitry Stogov
|
9eb366698d
|
Avoid reservaton of temporary resiser for argument passing
We may use any scratch register that is not used for parameters
|
2023-04-26 12:16:05 +03:00 |
|
Dmitry Stogov
|
0de0c1d0fa
|
Improve parallel copy algorithm to support move of single source into multiple destinations
|
2023-04-26 10:56:55 +03:00 |
|
Dmitry Stogov
|
1749168078
|
Add ir_insn_len() and ir_insn_inputs_to_len() private helpers
|
2023-04-21 13:40:55 +03:00 |
|
Dmitry Stogov
|
e01c43a967
|
Simplify access to nodes with variable inputs count
|
2023-04-21 12:40:17 +03:00 |
|
Dmitry Stogov
|
e5c01495da
|
Use arena to allocate live_intervals and nested data structures
|
2023-04-13 13:47:16 +03:00 |
|
Dmitry Stogov
|
04795b9f04
|
Fix compilation warnings
|
2023-04-12 10:48:30 +03:00 |
|
Dmitry Stogov
|
1e5e9e08ce
|
Re-implement instruction fusion and live-range construction
|
2023-04-05 19:20:43 +03:00 |
|
Dmitry Stogov
|
1058cde808
|
Cleanup instruction selector
|
2023-03-29 01:21:54 +03:00 |
|
Dmitry Stogov
|
ba0fa44447
|
Add "const" modifiers
|
2023-03-28 13:18:12 +03:00 |
|
Dmitry Stogov
|
72a5649236
|
Reorder conditions and avoid reloading
|
2023-03-23 23:44:59 +03:00 |
|
Dmitry Stogov
|
7e687262f7
|
Remove always true conditions
|
2023-03-23 22:16:05 +03:00 |
|
Dmitry Stogov
|
87dbdcea0d
|
Add necessary compensation loads for bounded nodes when enter into function through OSR entry-point
|
2023-03-21 13:45:37 +03:00 |
|
Dmitry Stogov
|
f5b7065b10
|
Refactor the ENTRY nodes
Now all ENTRY nodes have a "fake" input control edge.
Through this edge all of them are dominated by START node.
|
2023-03-17 09:02:37 +03:00 |
|
Dmitry Stogov
|
5052a6ca97
|
Fix stack alignment and allow non-saved permanent registers in the "fixed" frames
|
2023-03-07 21:38:27 +03:00 |
|
Dmitry Stogov
|
9b34731d16
|
Fix most MSVC compilation warnings
|
2023-02-28 02:11:09 +03:00 |
|
Dmitry Stogov
|
637fe28e90
|
Add comments
|
2023-02-21 15:41:41 +03:00 |
|
Dmitry Stogov
|
9f81982d86
|
Fix 'mov' to/from 'sp' register
sp is shared with zero register and 'mov' for sp/xzr is encoded differently
|
2023-02-21 11:42:05 +03:00 |
|
Dmitry Stogov
|
c71076d3f0
|
Allow reservation stack for passing arguments
|
2023-02-17 15:52:26 +03:00 |
|
Dmitry Stogov
|
fd653528e9
|
JMP optimization. Lift constant IJMP targets into jmp_table(s).
|
2023-02-16 22:41:55 +03:00 |
|
Dmitry Stogov
|
038b1e43cd
|
We can't preallocate stack for fastcall function calls
|
2023-01-31 16:13:15 +03:00 |
|
Dmitry Stogov
|
677c6cb2cb
|
Move declaration of some register alloation related macros to public API
Use RLOAD.op3 as a flag to avoid spill store
|
2023-01-30 16:33:57 +03:00 |
|
Dmitry Stogov
|
bbfcb3e8c8
|
Fix register allocation for MUL_OV in a different way
|
2023-01-26 13:20:08 +03:00 |
|
Dmitry Stogov
|
4fb50d85aa
|
Add assertion when allocated preserved register is not saved in "fixed" frame prologue
|
2023-01-26 12:49:23 +03:00 |
|
Dmitry Stogov
|
761c50488e
|
Fix incorrect code generation
|
2023-01-26 11:50:10 +03:00 |
|
Dmitry Stogov
|
4a67399005
|
Fix integer MUL overflow checks
|
2023-01-26 10:08:40 +03:00 |
|
Dmitry Stogov
|
771da56d07
|
Fix incorrect tests for empty basic blocks
|
2023-01-24 11:48:21 +03:00 |
|
Dmitry Stogov
|
a5c0514b13
|
Use better conditions
|
2023-01-23 16:05:06 +03:00 |
|
Dmitry Stogov
|
32ad3d1052
|
Use inline functions to avoid false positive address sanitaizer warnings
|
2023-01-20 15:35:02 +03:00 |
|
Dmitry Stogov
|
3ac58893f2
|
Fix address sanitizer warnings
|
2023-01-20 11:30:22 +03:00 |
|
Dmitry Stogov
|
208e0040ae
|
Prefer 'ADD [addr], %r1' over 'mov [addr], %r1; lea [%r1, %r2], %r3'
|
2022-12-28 22:24:42 +03:00 |
|
Dmitry Stogov
|
cc8f3fe987
|
Fix register allocation for intervals started by RLOAD of non-fixed register.
These intervals may be split and spilled.
|
2022-12-27 22:34:52 +03:00 |
|
Dmitry Stogov
|
d528d29872
|
Fix memory leaks in case of dynasm errors and JIT buffer overflow
|
2022-12-26 20:58:54 +03:00 |
|
Dmitry Stogov
|
67da9e93ea
|
Fix register clobbering during argument passing and spill load
|
2022-12-26 20:25:11 +03:00 |
|
Dmitry Stogov
|
d26b162ffa
|
Fix register clobbering during argument passing
|
2022-12-26 18:27:53 +03:00 |
|
Dmitry Stogov
|
9f0bf4849f
|
Fix build
|
2022-12-26 14:44:57 +03:00 |
|
Dmitry Stogov
|
1df594fea5
|
Fix memory leak
|
2022-12-26 14:17:48 +03:00 |
|
Dmitry Stogov
|
4d7386d342
|
Fix support for spill loads
|
2022-12-15 23:27:30 +03:00 |
|
Dmitry Stogov
|
52842a094a
|
Require temporary register for passing argument through stack
|
2022-12-12 18:14:31 +03:00 |
|