Include the processor atomic operations in the OperIsStore category
authorBrian Sullivan <briansul@microsoft.com>
Thu, 12 Jul 2018 18:11:31 +0000 (11:11 -0700)
committerBrian Sullivan <briansul@microsoft.com>
Thu, 12 Jul 2018 18:11:31 +0000 (11:11 -0700)
THe atomic operations are GT_CMPXCHG, GT_LOCKADD, GT_XCHG, GT_XADD

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

src/coreclr/src/jit/gentree.h
src/coreclr/src/jit/sideeffects.cpp

index 3078b77..3bddf61 100644 (file)
@@ -1463,25 +1463,25 @@ public:
 
     bool OperIsImplicitIndir() const;
 
-    bool OperIsStore() const
+    static bool OperIsAtomicOp(genTreeOps gtOper)
     {
-        return OperIsStore(gtOper);
+        return (gtOper == GT_XADD || gtOper == GT_XCHG || gtOper == GT_LOCKADD || gtOper == GT_CMPXCHG);
     }
 
-    static bool OperIsStore(genTreeOps gtOper)
+    bool OperIsAtomicOp() const
     {
-        return (gtOper == GT_STOREIND || gtOper == GT_STORE_LCL_VAR || gtOper == GT_STORE_LCL_FLD ||
-                gtOper == GT_STORE_BLK || gtOper == GT_STORE_OBJ || gtOper == GT_STORE_DYN_BLK);
+        return OperIsAtomicOp(gtOper);
     }
 
-    static bool OperIsAtomicOp(genTreeOps gtOper)
+    bool OperIsStore() const
     {
-        return (gtOper == GT_XADD || gtOper == GT_XCHG || gtOper == GT_LOCKADD || gtOper == GT_CMPXCHG);
+        return OperIsStore(gtOper);
     }
 
-    bool OperIsAtomicOp() const
+    static bool OperIsStore(genTreeOps gtOper)
     {
-        return OperIsAtomicOp(gtOper);
+        return (gtOper == GT_STOREIND || gtOper == GT_STORE_LCL_VAR || gtOper == GT_STORE_LCL_FLD ||
+                OperIsStoreBlk(gtOper) || OperIsAtomicOp(gtOper));
     }
 
     // This is here for cleaner FEATURE_SIMD #ifdefs.
index 931ee6f..6821ab5 100644 (file)
@@ -165,7 +165,7 @@ AliasSet::NodeInfo::NodeInfo(Compiler* compiler, GenTree* node)
         isWrite = true;
         node    = node->gtGetOp1();
     }
-    else if (node->OperIsStore() || node->OperIsAtomicOp())
+    else if (node->OperIsStore())
     {
         isWrite = true;
     }