minirust
minirust copied to clipboard
A precise specification for "Rust lite / MIR plus"
Currently the minimizer only supports a few const values, and it assumes they are all represented as scalars. However what should actually happen is that it should recursively translate the...
Currently we just get a panic, with no idea what the failing code even looks like. We should do better than that.
The type minimization currently doesn't reuse the result, which can lead to exponential blow up. `tests/pass/enums.rs` has an example of a type which currently cannot be minimized with 32GB of...
Currently, the tests in `minitest` do all management of local names / basic block IDs / function names "by hand". That's not very ergonomic. We should come up with APIs...
Minimizing the following program leads to a MiniRust program that isn't well-formed: ```rust fn main() { let x = (1, 0) == (0, 1); } ```
This line is causing a bunch of trouble: https://github.com/minirust/minirust/blob/f6bfad075def59ec52a1fed792a4c25f637d1e86/spec/lang/representation.md#L481 We probably want a small pretty-printer for types somewhere, because dumping the debug representation of an enum is entirely too much...
Currently, a function-local variable is a place expression, but referencing a global works via `Constant::GlobalPointer`. This seems somewhat inconsistent. On the other hand, we also have `Constant::FnPointer`, which is nicely...
It is currently possible to call functions with mismatching return types. It is possible to return a `u64` from a function and give a `u8` as the place to put...
Currently MiniRust accepts requests to deallocate global memory. We will need an 'allocation kind' system like Miri which ensures that the heap deallocation function only deallocates heap memory, not stack...
Currently, on a function call, MiniRust creates a new memory allocation for the return local. It also remembers the place that the caller wants the return value to be written...