As part of the nll-facts borrowck work, I added the idea of outlives relation that occur at all points. I did my best to explain it here:
https://github.com/rust-lang/rust/blob/0cd465087d800f6e1183ed3e8a71262039245902/src/librustc_mir/borrow_check/nll/type_check/mod.rs#L627-L657
I handled this by adding the relevant outlives relationships to all points. But, looking at the outlives.facts I saw that these relations account for a LOT of noise. Of the ~500K tuples in that file, about half are due to this. =) Moreover, these tuples will mess up any optimizations like #20. It's clear we need a better approach, but I'm not sure what.
That said, manually removing those tuples and re-running the analysis shows that they only have a small effect on overall performance (from ~40s to ~35s).
As part of the nll-facts borrowck work, I added the idea of outlives relation that occur at all points. I did my best to explain it here:
https://github.com/rust-lang/rust/blob/0cd465087d800f6e1183ed3e8a71262039245902/src/librustc_mir/borrow_check/nll/type_check/mod.rs#L627-L657
I handled this by adding the relevant outlives relationships to all points. But, looking at the
outlives.factsI saw that these relations account for a LOT of noise. Of the ~500K tuples in that file, about half are due to this. =) Moreover, these tuples will mess up any optimizations like #20. It's clear we need a better approach, but I'm not sure what.That said, manually removing those tuples and re-running the analysis shows that they only have a small effect on overall performance (from ~40s to ~35s).