Track single def locals in importer (dotnet/coreclr#21251)
authorAndy Ayers <andya@microsoft.com>
Thu, 29 Nov 2018 08:32:55 +0000 (00:32 -0800)
committerGitHub <noreply@github.com>
Thu, 29 Nov 2018 08:32:55 +0000 (00:32 -0800)
commitd81a4add0c07ed796717a7fece737490792b85dd
tree0da50a2a7d330fe8ecd56742328cdfa465098ff9
parentd480065527475d3f038b20f76f1ba6b84f5a226f
Track single def locals in importer (dotnet/coreclr#21251)

* Defer setting lvSingleDef until lvaMarkLocalVars

Since this information isn't used early on in the jit, defer setting this bit
until later.

* Track single-def locals in the importer

and use this information to enable type updates during late devirtualization.
This gets some cases where the exact type materializes late (perhaps via a
chain of copies).

Commit migrated from https://github.com/dotnet/coreclr/commit/40bf810b5cb83ba45008f9f8c12a4e3d46eb6832
src/coreclr/src/jit/compiler.h
src/coreclr/src/jit/flowgraph.cpp
src/coreclr/src/jit/importer.cpp
src/coreclr/src/jit/lclvars.cpp