diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-01-14 01:20:03 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-01-14 01:20:03 +0000 |
commit | 3463e696fb4253a8cf16d3b5198480bbb4b10af2 (patch) | |
tree | 97e947f634d760429d4dec45b80d853d437ed718 /llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | |
parent | 585025474f03f50e3b69d7ee2f4712be3613f36c (diff) | |
download | bcm5719-llvm-3463e696fb4253a8cf16d3b5198480bbb4b10af2.tar.gz bcm5719-llvm-3463e696fb4253a8cf16d3b5198480bbb4b10af2.zip |
[X86] Don't alter HasOpaqueSPAdjustment after we've relied on it
We rely on HasOpaqueSPAdjustment not changing after we've calculated
things based on it. Things like whether or not we can use 'rep;movs' to
copy bytes around, that sort of thing. If it changes, invariants in the
backend will quietly break. This situation arose when we had a call to
memcpy *and* a COPY of the FLAGS register where we would attempt to
reference local variables using %esi, a register that was clobbered by
the 'rep;movs'.
This fixes PR26124.
llvm-svn: 257730
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 9f8759df0ba..c075da4738a 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -634,7 +634,7 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) { } if (TLI->hasCopyImplyingStackAdjustment(MF)) - MFI->setHasOpaqueSPAdjustment(true); + MFI->setHasCopyImplyingStackAdjustment(true); // Freeze the set of reserved registers now that MachineFrameInfo has been // set up. All the information required by getReservedRegs() should be |