Implement alive across call for CSE candidates (dotnet/coreclr#27449)
authorBrian Sullivan <briansul@microsoft.com>
Mon, 11 Nov 2019 22:59:36 +0000 (14:59 -0800)
committerGitHub <noreply@github.com>
Mon, 11 Nov 2019 22:59:36 +0000 (14:59 -0800)
commitbac5d5e6340b86a5f96fd42fed0b3d8bbc28c28e
tree9fbdc368e8c845abe525fec2da61365d8f9223e0
parent64856c64de96c77b10e10622ba906dcb4eb9c085
Implement alive across call for CSE candidates (dotnet/coreclr#27449)

* Added the implementation of CSE live across call algorithm

Fix CSE dataflow for Zero Diffs
Perform backward walk of statements in optValnumCSE_InitDataFlow()

Code Review feedback
- Rename cseTraits to cseLivenessTraits
- Move initialization of cseMaskTraits to optCSE_canSwap
- Rework GT_CALL backwards walk for bbCseGen
- Correct comments

Rename cseBit to cseAvailBit and cseBit2 to cseAvailCrossCallBit
Update CSE_DataFlow to handle calls that kill CSE for live across calls

* Code review feedback, added lots of comments
Fixes printing of EXP_SET BitVecs with more than 64 bits

Commit migrated from https://github.com/dotnet/coreclr/commit/470910864eca8172e6f8a3c58beb85176b9a4008
src/coreclr/src/jit/block.h
src/coreclr/src/jit/compiler.h
src/coreclr/src/jit/morph.cpp
src/coreclr/src/jit/optcse.cpp
src/coreclr/src/jit/utils.cpp