2022-04-08 15:40:28 +02:00
|
|
|
- va_arg nodes
|
|
|
|
- BSTART, BEND nodes (to free data allocated by ALLOCA)
|
|
|
|
- ENTRY node for multy-entry units
|
|
|
|
- guards
|
|
|
|
- variable name binding
|
|
|
|
|
|
|
|
- VLOAD, VSTORE -> SSA
|
|
|
|
|
|
|
|
? reassociation folding rules
|
|
|
|
- folding engine improvement (one rule for few patterns)
|
|
|
|
|
2022-05-19 21:12:20 +02:00
|
|
|
- irreducable loops detection/support
|
2022-04-08 15:40:28 +02:00
|
|
|
|
|
|
|
- range inference and PI node
|
|
|
|
- SCCP edge cases
|
2022-04-08 18:02:11 +02:00
|
|
|
- Folding after SCCP (see combo4.ir)
|
2022-04-08 15:40:28 +02:00
|
|
|
|
|
|
|
- local scheduling according to data dependencies, register presure and pipeline stalls
|
|
|
|
- basic block trace scheduling
|
|
|
|
|
|
|
|
? instruction selection
|
|
|
|
- xor, btsl=INCL, btrl=EXCL, btl=IN, bsr, maxss, maxsd, minss, minsd
|
|
|
|
- MOVZX to avoid a SHIFT and AND instruction
|
2022-04-21 09:20:41 +02:00
|
|
|
- Use CMOVcc to remove branches
|
2022-04-22 12:31:28 +02:00
|
|
|
- BURS ???
|
2022-04-08 15:40:28 +02:00
|
|
|
|
|
|
|
? register allocation
|
2022-05-19 10:02:39 +02:00
|
|
|
- hints and low priority registers (prevent allocating registers that are used as hints in the following intersecting intervals)
|
|
|
|
- spill slot coalescing
|
|
|
|
- optimal spill code placement through resolution
|
|
|
|
- splinting (spill only at cold path if possible)
|
|
|
|
- separate INT and FP allocation phases (for performance)
|
2022-04-08 15:40:28 +02:00
|
|
|
|
|
|
|
? code generation
|
2022-05-20 12:09:41 +02:00
|
|
|
- COND
|
2022-05-19 21:12:20 +02:00
|
|
|
- 32-bit x86 back-end
|
|
|
|
- binary code emission without DynAsm ???
|
2022-04-08 15:40:28 +02:00
|
|
|
|
|
|
|
? disassembler
|
|
|
|
- .rodata section and relative data labels
|
|
|
|
|
|
|
|
- modules (functions, data objecs, import, export, prototypes, forward declarations, memory segments, ref data, expr data)
|
2022-05-19 21:12:20 +02:00
|
|
|
- C front-end
|
2022-04-08 15:40:28 +02:00
|
|
|
- interpreter
|
|
|
|
- alias analyzes
|
|
|
|
|
|
|
|
- PHP support
|