@@ -46,21 +46,16 @@ SDValue AArch64SelectionDAGInfo::EmitMOPS(AArch64ISD::NodeType SDOpcode,
46
46
}
47
47
}();
48
48
49
- MachineMemOperand::Flags Flags = MachineMemOperand::MOStore;
50
- if (isVolatile)
51
- Flags |= MachineMemOperand::MOVolatile;
52
- if (!IsSet)
53
- Flags |= MachineMemOperand::MOLoad;
54
-
55
49
MachineFunction &MF = DAG.getMachineFunction ();
56
50
51
+ auto Vol =
52
+ isVolatile ? MachineMemOperand::MOVolatile : MachineMemOperand::MONone;
53
+ auto DstFlags = MachineMemOperand::MOStore | Vol;
57
54
auto *DstOp =
58
- MF.getMachineMemOperand (DstPtrInfo, Flags, ConstSize, Alignment);
59
- auto *SrcOp =
60
- MF.getMachineMemOperand (SrcPtrInfo, Flags, ConstSize, Alignment);
55
+ MF.getMachineMemOperand (DstPtrInfo, DstFlags, ConstSize, Alignment);
61
56
62
57
if (IsSet) {
63
- // Extend value to i64 if required
58
+ // Extend value to i64, if required.
64
59
if (SrcOrValue.getValueType () != MVT::i64 )
65
60
SrcOrValue = DAG.getNode (ISD::ANY_EXTEND, DL, MVT::i64 , SrcOrValue);
66
61
SDValue Ops[] = {Dst, Size, SrcOrValue, Chain};
@@ -72,6 +67,10 @@ SDValue AArch64SelectionDAGInfo::EmitMOPS(AArch64ISD::NodeType SDOpcode,
72
67
SDValue Ops[] = {Dst, SrcOrValue, Size, Chain};
73
68
const EVT ResultTys[] = {MVT::i64 , MVT::i64 , MVT::i64 , MVT::Other};
74
69
MachineSDNode *Node = DAG.getMachineNode (MachineOpcode, DL, ResultTys, Ops);
70
+
71
+ auto SrcFlags = MachineMemOperand::MOLoad | Vol;
72
+ auto *SrcOp =
73
+ MF.getMachineMemOperand (SrcPtrInfo, SrcFlags, ConstSize, Alignment);
75
74
DAG.setNodeMemRefs (Node, {DstOp, SrcOp});
76
75
return SDValue (Node, 3 );
77
76
}
0 commit comments