As Boxes are probably the most-used structure for heap allocation, improving the precision of the analysis for them and avoiding reasoning about the pointer inside them can help a lot. It also affects the results for other types such as vectors when they use boxes. (e.g., using into_boxed_slice or some forms of vec! macro).
Box
es provide the simplest form of heap allocation in Rust. However, because they own a pointer, flowistry conservatively considers a maximum (unknown) region for them causing all of them to be grouped under a single alias group. This behavior seems to be an exception, which can be rooted here. https://github.com/willcrichton/flowistry/blob/a156ab9839b9e84fe9e178ce16937e98d13613b5/crates/flowistry/src/mir/utils.rs#L613-L614As
Box
es are probably the most-used structure for heap allocation, improving the precision of the analysis for them and avoiding reasoning about the pointer inside them can help a lot. It also affects the results for other types such as vectors when they use boxes. (e.g., usinginto_boxed_slice
or some forms ofvec!
macro).