How do I access information computed by compiler passes?



I just found that this forum is better suited for my users.rust-lang question, that I more here.

We are building a verification tool for Rust, implementing it as a compiler plugin (driver).

We would like to access the information computed by various passes (among which the borrow checker, the drop checker, l-values…). Looking at the code of the compiler it seems that those information are often hidden from outside the crates.

For this reason, we plan to depend on our patched version of the compiler. We hope to get by with a small patch, and of course we would like to minimize the overhead of maintaining our fork of the compiler with a patch on top of it.

What do you think? Do you have any suggestion or alternative to the patch-the-compiler plan?

Looking around, I found that this is the approach used by the Borrow visualizer prototype.