diff options
author | Brian Sullivan <briansul@microsoft.com> | 2018-12-05 17:46:49 -0800 |
---|---|---|
committer | Brian Sullivan <briansul@microsoft.com> | 2018-12-05 17:46:49 -0800 |
commit | 425f8428461bb4770bbec56d3bbb13e0a6c0adf6 (patch) | |
tree | 01e09937121724136f5de1940b263e2949ad5ec7 /src/jit/valuenum.cpp | |
parent | f1b63cc0709cb0ae3985149c0500d7e57322fc00 (diff) | |
download | coreclr-425f8428461bb4770bbec56d3bbb13e0a6c0adf6.tar.gz coreclr-425f8428461bb4770bbec56d3bbb13e0a6c0adf6.tar.bz2 coreclr-425f8428461bb4770bbec56d3bbb13e0a6c0adf6.zip |
Added NullChk exceptions for GT_ARR_LENTH, GT_ARR_ELEM and GT_ARR_OFFSET
Diffstat (limited to 'src/jit/valuenum.cpp')
-rw-r--r-- | src/jit/valuenum.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/jit/valuenum.cpp b/src/jit/valuenum.cpp index 7e7a68194b..a59e918bca 100644 --- a/src/jit/valuenum.cpp +++ b/src/jit/valuenum.cpp @@ -9622,16 +9622,31 @@ void Compiler::fgValueNumberAddExceptionSet(GenTree* tree) // Don't add exception set on LHS of assignment break; } - // fall through + __fallthrough; case GT_BLK: case GT_OBJ: case GT_DYN_BLK: - case GT_ARR_LENGTH: // Implicit null check. - case GT_NULLCHECK: // Explicit null check. + case GT_NULLCHECK: fgValueNumberAddExceptionSetForIndirection(tree, tree->AsIndir()->Addr()); break; + case GT_ARR_LENGTH: + fgValueNumberAddExceptionSetForIndirection(tree, tree->AsArrLen()->ArrRef()); + break; + + case GT_ARR_ELEM: + fgValueNumberAddExceptionSetForIndirection(tree, tree->gtArrElem.gtArrObj); + break; + + case GT_ARR_INDEX: + fgValueNumberAddExceptionSetForIndirection(tree, tree->gtArrIndex.ArrObj()); + break; + + case GT_ARR_OFFSET: + fgValueNumberAddExceptionSetForIndirection(tree, tree->gtArrOffs.gtArrObj); + break; + case GT_DIV: case GT_UDIV: case GT_MOD: |