Fix morphing of block op assignments
authorBruce Forstall <brucefo@microsoft.com>
Sat, 28 Jan 2017 01:05:05 +0000 (17:05 -0800)
committerBruce Forstall <brucefo@microsoft.com>
Sat, 28 Jan 2017 01:11:14 +0000 (17:11 -0800)
During morphing, block op assignments had their children set to
the "IND" morph context. This is incorrect. Previously, block
ops would "incorporate" the "IND-ness" of their children. However,
now, the operands will be a IND/BLK/OBJ node explicitly. Deleting
this incorrect code enables other changes, not yet merged, to work.

This causes no amd64 SPMI desktop asm diffs.

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

src/coreclr/src/jit/morph.cpp

index 75afb03..51354d1 100644 (file)
@@ -8484,7 +8484,7 @@ GenTreePtr Compiler::fgMorphOneAsgBlockOp(GenTreePtr tree)
     // The SIMD type in question could be Vector2f which is 8-bytes in size.
     // The below check is to make sure that we don't turn that copyblk
     // into a assignment, since rationalizer logic will transform the
-    // copyblk apropriately. Otherwise, the transormation made in this
+    // copyblk appropriately. Otherwise, the transformation made in this
     // routine will prevent rationalizer logic and we might end up with
     // GT_ADDR(GT_SIMD) node post rationalization, leading to a noway assert
     // in codegen.
@@ -11323,12 +11323,6 @@ GenTreePtr Compiler::fgMorphSmpOp(GenTreePtr tree, MorphAddrContext* mac)
                         // comma list.  The left arg (op1) gets a fresh context.
                         subMac1 = nullptr;
                         break;
-                    case GT_ASG:
-                        if (tree->OperIsBlkOp())
-                        {
-                            subMac1 = &subIndMac1;
-                        }
-                        break;
                     case GT_OBJ:
                     case GT_BLK:
                     case GT_DYN_BLK:
@@ -11466,12 +11460,6 @@ GenTreePtr Compiler::fgMorphSmpOp(GenTreePtr tree, MorphAddrContext* mac)
                         }
                     }
                     break;
-                case GT_ASG:
-                    if (tree->OperIsBlkOp())
-                    {
-                        mac = &subIndMac2;
-                    }
-                    break;
                 default:
                     break;
             }