Alexander Fedotov

Results 28 issues of Alexander Fedotov

Another powerful optimisation opportunity is constant propagation. This pass should be able to simplify and optimise out as much constness out of an IR body as possible. This might include...

lowering

This will be needed for implementing custom backends like the VM and (potentially in the future other architecture backends like `x86`). It should be agnostic to a backend, and can...

vm
lowering

This issue relates to the compiler knowing about the call graph of the program. This will enable the following: - optimise out dead code, functions which are never called and...

lowering

This pass will re-write the IR into SSA form so that things like liveness checking and register allocations can be more easily implemented.

lowering

The `analysis` phase of the compiler has several distinguished parts and phases which run. In the recent spirit of improving performance across the compiler, it would be beneficial to collect...

performance
semantic-analysis

Currently, byte literals are being printed as standard numeric literals. To make it a bit nicer when debugging, byte literals should be printed as the raw source instead of the...

good first issue
type-system

Currently, the LLVM code generation backend doesn't implement emitting debug information. This is a must-need feature of any code generation backend and should be implemented. LLVM provides a way to...

codegen

The following snippet: ```rust main := () => { buf := [1u8; 4usize + 5usize]](buf: [u8; { 1usize + 1usize }] = [1u8, 1u8]) } ``` Should produce this behaviour:...

bug
type-system

Currently, the semantic pass doesn't generate names for monomorphised names, so for code like: ```rs main := () => { buf : [u8; 9] = [1u8; 9] mut sum :=...

type-system
lowering

Currently the sizes of `PatArgId`, `ArgId` are 16bytes which is excessively large, they can both probably be shrunk down to 8bytes. Similarly, `SomeArgId` takes up a whopping 24bytes, we could...

performance
semantic-analysis