diff options
author | Pat Gavlin <pagavlin@microsoft.com> | 2016-09-16 18:35:38 -0700 |
---|---|---|
committer | Pat Gavlin <pagavlin@microsoft.com> | 2016-09-19 08:34:23 -0700 |
commit | 0188c07e524986bd6f8587e57f37f97e3143bb0e (patch) | |
tree | e9286deee07e51d5066eb6c54c7b2159e6ed4bc9 /src/jit/rationalize.cpp | |
parent | 2bb7e9ae5d7e991ec37345ef4befce738fa5996d (diff) | |
download | coreclr-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.cpp | 5 |
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 |