Drop elaboration in rustc classifies each drop as Dead, Static, Conditional or Open using two dataflow analyses; only the Conditional case needs a runtime drop flag, so most drops …
rustc’s MIR inliner computes the call graph from mir_promoted rather than optimized_mir, so the query graph stays acyclic; the result is conservative but never deadlocks.
GVN in rustc gives every borrow a unique provenance marker whose hash and equality implementations panic, so the compiler cannot accidentally merge two pointers.