diff options
| author | Craig Topper <craig.topper@intel.com> | 2019-11-01 14:06:52 -0700 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2019-11-01 14:43:17 -0700 |
| commit | 42d77461f3298d5b7bf09208d67a3d8bb28df065 (patch) | |
| tree | cff8887fb23ae5cfa62406d94e217f530c477483 /llvm/lib/CodeGen/MachineBasicBlock.cpp | |
| parent | 98245d081e72afff258515bc93a70e8c074f3589 (diff) | |
[MachineBasicBlock] Skip over debug instructions in computeRegisterLiveness before checking for begin
If there are debug instructions before the stopping point,
we need to skip over them before checking for begin in order
to avoid having the debug instructions effect behavior.
Fixes PR43758.
Differential Revision: https://reviews.llvm.org/D69606
Diffstat (limited to 'llvm/lib/CodeGen/MachineBasicBlock.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/MachineBasicBlock.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MachineBasicBlock.cpp b/llvm/lib/CodeGen/MachineBasicBlock.cpp index 854bef3aab05..71354ea43453 100644 --- a/llvm/lib/CodeGen/MachineBasicBlock.cpp +++ b/llvm/lib/CodeGen/MachineBasicBlock.cpp @@ -1462,6 +1462,11 @@ MachineBasicBlock::computeRegisterLiveness(const TargetRegisterInfo *TRI, } while (I != begin() && N > 0); } + // If all the instructions before this in the block are debug instructions, + // skip over them. + while (I != begin() && std::prev(I)->isDebugInstr()) + --I; + // Did we get to the start of the block? if (I == begin()) { // If so, the register's state is definitely defined by the live-in state. |
