summaryrefslogtreecommitdiff
path: root/src/jit/valuenum.cpp
diff options
context:
space:
mode:
authorBrian Sullivan <briansul@microsoft.com>2018-12-05 17:46:49 -0800
committerBrian Sullivan <briansul@microsoft.com>2018-12-05 17:46:49 -0800
commit425f8428461bb4770bbec56d3bbb13e0a6c0adf6 (patch)
tree01e09937121724136f5de1940b263e2949ad5ec7 /src/jit/valuenum.cpp
parentf1b63cc0709cb0ae3985149c0500d7e57322fc00 (diff)
downloadcoreclr-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.cpp21
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: