VS has just added support for what they call dynamic debugging. Dynamic debugging is basically generating an optimized and unoptimized version of the same binary, then dynamically patching in the unoptimized versions when breakpoints are set. This limits the scope of the slowdown, and enables you to deoptimize without needing a separate recompile.
This probably needs LLVM support, and maybe some cooperation with MS to correctly put out whatever metadata they need to make this work.