Permit null object in `GenTreeUseEdgeIterator`
authorJoseph Tremoulet <jotrem@microsoft.com>
Mon, 20 Mar 2017 19:39:46 +0000 (15:39 -0400)
committerJoseph Tremoulet <jotrem@microsoft.com>
Mon, 20 Mar 2017 19:41:49 +0000 (15:41 -0400)
We use `GT_FIELD` for static field loads, which have no instance pointer.
Update the iterator constructor to recognize this as a valid state rather
than fail an assertion.

Commit migrated from https://github.com/dotnet/coreclr/commit/ffe7ea09fc7cb027cf832520090974de09947881

src/coreclr/src/jit/gentree.cpp

index f0b2e41..243f6cf 100644 (file)
@@ -9322,9 +9322,15 @@ GenTreeUseEdgeIterator::GenTreeUseEdgeIterator(GenTree* node)
             return;
 
         case GT_FIELD:
-            m_edge = &m_node->AsField()->gtFldObj;
-            assert(*m_edge != nullptr);
-            m_advance = &GenTreeUseEdgeIterator::Terminate;
+            if (m_node->AsField()->gtFldObj == nullptr)
+            {
+                m_state = -1;
+            }
+            else
+            {
+                m_edge    = &m_node->AsField()->gtFldObj;
+                m_advance = &GenTreeUseEdgeIterator::Terminate;
+            }
             return;
 
         case GT_STMT: