[PATCH] D80062: [x86] Propagate memory operands during call frame optimization & ISel DAG postprocessing
Jean-Michel Gorius via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat May 16 13:13:24 PDT 2020
Kayjukh updated this revision to Diff 264451.
Kayjukh added a comment.
Also propagate store memory operands during call frame optimization.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D80062/new/
https://reviews.llvm.org/D80062
Files:
llvm/lib/Target/X86/X86CallFrameOptimization.cpp
llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
===================================================================
--- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -1393,6 +1393,8 @@
And.getOperand(6) /* Chain */ };
MachineSDNode *Test = CurDAG->getMachineNode(NewOpc, SDLoc(N),
MVT::i32, MVT::Other, Ops);
+ CurDAG->setNodeMemRefs(
+ Test, cast<MachineSDNode>(And.getNode())->memoperands());
ReplaceUses(N, Test);
MadeChange = true;
continue;
Index: llvm/lib/Target/X86/X86CallFrameOptimization.cpp
===================================================================
--- llvm/lib/Target/X86/X86CallFrameOptimization.cpp
+++ llvm/lib/Target/X86/X86CallFrameOptimization.cpp
@@ -562,6 +562,7 @@
unsigned NumOps = DefMov->getDesc().getNumOperands();
for (unsigned i = NumOps - X86::AddrNumOperands; i != NumOps; ++i)
Push->addOperand(DefMov->getOperand(i));
+ Push->cloneMergedMemRefs(MF, {&*DefMov, &*Store});
DefMov->eraseFromParent();
} else {
@@ -569,6 +570,7 @@
Push = BuildMI(MBB, Context.Call, DL, TII->get(PushOpcode))
.addReg(Reg)
.getInstr();
+ Push->cloneMemRefs(MF, *Store);
}
break;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D80062.264451.patch
Type: text/x-patch
Size: 1403 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200516/ecac1f65/attachment.bin>
More information about the llvm-commits
mailing list