diff options
author | Brian Sullivan <briansul@microsoft.com> | 2018-09-05 15:58:10 -0700 |
---|---|---|
committer | Brian Sullivan <briansul@microsoft.com> | 2018-09-13 15:21:58 -0700 |
commit | a63d721496f4035fc52e54c24d02288a30c04051 (patch) | |
tree | 47117c8934a6e680a5005a3d1f476024df7fade4 /src/jit/gentree.h | |
parent | c179f27661d5633168067f9f706dc44938086a1e (diff) | |
download | coreclr-a63d721496f4035fc52e54c24d02288a30c04051.tar.gz coreclr-a63d721496f4035fc52e54c24d02288a30c04051.tar.bz2 coreclr-a63d721496f4035fc52e54c24d02288a30c04051.zip |
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
Diffstat (limited to 'src/jit/gentree.h')
-rw-r--r-- | src/jit/gentree.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/jit/gentree.h b/src/jit/gentree.h index d14ad1a802..44bac8bc3f 100644 --- a/src/jit/gentree.h +++ b/src/jit/gentree.h @@ -885,9 +885,8 @@ public: #define GTF_BLK_VOLATILE GTF_IND_VOLATILE // GT_ASG, GT_STORE_BLK, GT_STORE_OBJ, GT_STORE_DYNBLK -- is a volatile block operation #define GTF_BLK_UNALIGNED GTF_IND_UNALIGNED // GT_ASG, GT_STORE_BLK, GT_STORE_OBJ, GT_STORE_DYNBLK -- is an unaligned block operation -#define GTF_OVERFLOW 0x10000000 // GT_ADD, GT_SUB, GT_MUL, -- Need overflow check. Use gtOverflow(Ex)() to check this flag. - // GT_ASG_ADD, GT_ASG_SUB, - // GT_CAST +#define GTF_OVERFLOW 0x10000000 // Supported for: GT_ADD, GT_SUB, GT_MUL and GT_CAST. + // Requires an overflow check. Use gtOverflow(Ex)() to check this flag. #define GTF_ARR_BOUND_INBND 0x80000000 // GT_ARR_BOUNDS_CHECK -- have proved this check is always in-bounds |