dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.08k stars 4.7k forks source link

JIT: emit debug info for untracked locals when optimizing #11255

Open AndyAyersMS opened 5 years ago

AndyAyersMS commented 5 years ago

Per notes in dotnet/runtime#11239 -- when the jit is optimizing it relies on liveness to drive user var debug info emission. But since untracked user vars don't have liveness they do produce any debug representation.

Seems like a better optimized code debug experience could be offered by emitting these untracked user vars as live throughout the method. VS2017 looks like it does a decent job of trimming down over-reported live scopes to relevant code ranges.

category:implementation theme:debug-info skill-level:intermediate cost:medium

BruceForstall commented 5 years ago

@AndyAyersMS you write:

But since untracked user vars don't have liveness they do produce any debug representation. do you mean "do not produce"?

Do we just need to get USING_VARIABLE_LIVE_RANGE enabled?