A Stateful MIR for Rust

First, it's not the "eager static drop" RFC, because it does not insert the drops (being a MIR-level semantics, that is not its job).

Yeah definitely. One could interpret that RFC as adding restrictions to the surface language such that it could be desugared to the IR I've defined so far.

If you can figure out a nice way to connect dynamic stack flags, that would be nice.

The basic idea (which is all I've worked out so far) would have enums for with initialized and uninitialized variants. Enum subtypes like in my "enum switch" section would remove the need for dynamic checks outside of unwinding. The annoying complication is that partial moves necessitate putting the enum tag somewhere else.