summaryrefslogtreecommitdiff
path: root/src/jit/rationalize.cpp
diff options
context:
space:
mode:
authorPat Gavlin <pagavlin@microsoft.com>2016-09-16 18:35:38 -0700
committerPat Gavlin <pagavlin@microsoft.com>2016-09-19 08:34:23 -0700
commit0188c07e524986bd6f8587e57f37f97e3143bb0e (patch)
treee9286deee07e51d5066eb6c54c7b2159e6ed4bc9 /src/jit/rationalize.cpp
parent2bb7e9ae5d7e991ec37345ef4befce738fa5996d (diff)
downloadcoreclr-0188c07e524986bd6f8587e57f37f97e3143bb0e.tar.gz
coreclr-0188c07e524986bd6f8587e57f37f97e3143bb0e.tar.bz2
coreclr-0188c07e524986bd6f8587e57f37f97e3143bb0e.zip
Mark GT_IND nodes that represent VSD targets.
The operand to such a node must be materialized into a register on certain platforms. This change defines a new IND-specific flag, GTF_IND_VSD_TGT, and uses that flag to indicate that a particular GT_IND node represents a VSD target. This flag is then observed by lowering on the necessary platforms in order to short circuit the logic that attempts to make the GT_IND's operand contained.
Diffstat (limited to 'src/jit/rationalize.cpp')
-rw-r--r--src/jit/rationalize.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/jit/rationalize.cpp b/src/jit/rationalize.cpp
index 11cba06eb0..19a5984c91 100644
--- a/src/jit/rationalize.cpp
+++ b/src/jit/rationalize.cpp
@@ -662,6 +662,11 @@ Compiler::fgWalkResult Rationalizer::RewriteNode(GenTree** useEdge, ArrayStack<G
RewriteAddress(use);
break;
+ case GT_IND:
+ // Clear the `GTF_IND_ASG_LHS` flag, which overlaps with `GTF_IND_VSD_TGT`.
+ node->gtFlags &= ~GTF_IND_ASG_LHS;
+ break;
+
case GT_NOP:
// fgMorph sometimes inserts NOP nodes between defs and uses
// supposedly 'to prevent constant folding'. In this case, remove the