Remove the `asgdLclVar` analysis from liveness.
authorPat Gavlin <pagavlin@microsoft.com>
Fri, 6 Jan 2017 19:11:19 +0000 (11:11 -0800)
committerPat Gavlin <pagavlin@microsoft.com>
Fri, 6 Jan 2017 20:12:29 +0000 (12:12 -0800)
commit2d190d6ef1e33152ec17205112e2fad6e673f75f
tree9f6f595e31d6222540232422943b8c15aa557d14
parent9b9e122aaf182aa053b9d0d166fea274434dda60
Remove the `asgdLclVar` analysis from liveness.

This analysis is not necessary for correctness and does not appear to
have any impact on the generated code: in particualr, internal assembly
diffs show no changes with this analysis disabled.

For example, consider the following statement:

    `(asg (lclVar V0) (add (lclVar V0) (icon 4)))`

Under the `asgdLclVar` analysis, the visit of the lclVar node that is an
operand to the add would mark the lclVar node that is the target of the
assignment with `GTF_VAR_USEDEF` and exit without adding V0 to the
current set of used lclVars. Instead, the visit of the lclVar node that
is the target of the assignment would add V0 to both the set of used
lclVar nodes and the set of defined lclVar nodes.

With this analysis disabled, the visit of the lclVar node that is an
operand to the add will add V0 to the set of used lclVar nodes and the
visit of the lclVar node that is the target of the assignment will add
V0 to the set of defined lclVar nodes. In both cases, the result is the
same.

Commit migrated from https://github.com/dotnet/coreclr/commit/583733b399edb423719e4754a3184913495e7575
src/coreclr/src/jit/codegenlegacy.cpp
src/coreclr/src/jit/compiler.h
src/coreclr/src/jit/liveness.cpp