summaryrefslogtreecommitdiff
path: root/src/jit
diff options
context:
space:
mode:
authorBrian Sullivan <briansul@microsoft.com>2016-12-08 14:55:23 -0800
committerBrian Sullivan <briansul@microsoft.com>2016-12-08 14:55:23 -0800
commit61b8887fbdb63df52d240a29bfbe68688df801a0 (patch)
tree0bb9aa625d9b844cb44a268ebde89897c106f504 /src/jit
parentbf4ed11eb5cee7123fd0c6fa5b60f09fe7adf23e (diff)
downloadcoreclr-61b8887fbdb63df52d240a29bfbe68688df801a0.tar.gz
coreclr-61b8887fbdb63df52d240a29bfbe68688df801a0.tar.bz2
coreclr-61b8887fbdb63df52d240a29bfbe68688df801a0.zip
The fix is to set the GTF_EXCEPT and GTF_GLOB_REF for every GT_DYN_BLK node that we create.
We typically don't have any information about the address supplied to a GT_DYN_BLK so we should conservatively allow that it can either be a null pointer or could point into the GC heap.
Diffstat (limited to 'src/jit')
-rw-r--r--src/jit/gentree.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/jit/gentree.h b/src/jit/gentree.h
index 05a3a4a070..b5390f3841 100644
--- a/src/jit/gentree.h
+++ b/src/jit/gentree.h
@@ -4258,6 +4258,8 @@ public:
GenTreeDynBlk(GenTreePtr addr, GenTreePtr dynamicSize)
: GenTreeBlk(GT_DYN_BLK, TYP_STRUCT, addr, 0), gtDynamicSize(dynamicSize), gtEvalSizeFirst(false)
{
+ // Conservatively the 'addr' could be null or point into the global heap.
+ gtFlags |= GTF_EXCEPT | GTF_GLOB_REF;
gtFlags |= (dynamicSize->gtFlags & GTF_ALL_EFFECT);
}