Reland [GlobalOpt] Preserve CFG analyses
The only place we modify the CFG is when calling
removeUnreachableBlocks(), so insert a callback there which invalidates
analyses for that function (or recomputes DT in the legacy PM).
We may delete functions, make sure to clear analyses for those
functions. (this was missed in the original revision)
Small compile time wins across the board:
https://llvm-compile-time-tracker.com/compare.php?from=
f444ea8ce0aaaa5ec1a4129809389da15cc41396&to=
698f41f4fc26cbf1006ed5d88e9d658edfc5b749&stat=instructions
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D128145