Value Number Enhancements:
authorBrian Sullivan <briansul@microsoft.com>
Wed, 5 Sep 2018 22:58:10 +0000 (15:58 -0700)
committerBrian Sullivan <briansul@microsoft.com>
Thu, 13 Sep 2018 22:21:58 +0000 (15:21 -0700)
commitec6792525e8fa91f79a864e5ef164c4b91247cf9
treec3a3213ca26c4a6a1300517f29293d6fed30d83d
parenta4eae62af14e19df08b57cb4bf125d71a6d0590e
Value Number Enhancements:

Revise the exeception gernerating value number functions:
VNF_OverflowEXc, VNF_CastOvf, VNF_ARithmeticExc, VNF_DivideByZeroExc and ConvertOverflowExc
added support methods for VNNormalValue
Extended GetVNGuncForOper to support overflow operations and additional unsigned operations:
And added value number functions for
- unsigned comparisons, unsigned add, sub and mul
- overflow add, sub, mul
New method: VMCheckAscending to validate that exception sets maintain the ascending ordfer property.
New method: VMExcSetIntersection and VMExcIsSubset
Changed the constant folding logic in VNForFunc to avoid folding when the operation will unconditionally throw when folded.
Explicitly specialize some EvalOp<> calls
Added several new method headers comments in ValueNum.cpp
Clear the unsigned flag when bashing nodes into GT_COMMA or GT_NOP nodes
Removed GT_NOP and GT_COMMA cases from GetVNFuncForOper
Added enum VNOperKind
Added support for the unsigned multiply VNFunc used on 32-bit target

Commit migrated from https://github.com/dotnet/coreclr/commit/a63d721496f4035fc52e54c24d02288a30c04051
src/coreclr/src/jit/gentree.cpp
src/coreclr/src/jit/gentree.h
src/coreclr/src/jit/morph.cpp
src/coreclr/src/jit/optcse.cpp
src/coreclr/src/jit/optimizer.cpp
src/coreclr/src/jit/valuenum.cpp
src/coreclr/src/jit/valuenum.h
src/coreclr/src/jit/valuenumfuncs.h
src/coreclr/src/jit/valuenumtype.h