From 4345df3dade18e30680108e1b0bd8e88f1c7da2a Mon Sep 17 00:00:00 2001 From: David Greene Date: Mon, 23 Jul 2018 20:23:50 +0000 Subject: Fix RegScavenger::unprocess RegScavenger::unprocess walks backward, so it should undo the effects of defs before undoing effects of kills. Previously it did things in the opposite order, leaving a register apparently unused (dead) in the case where an instruction both used (killed) and defined a register. Differential Revision: https://reviews.llvm.org/D42200 llvm-svn: 337735 --- llvm/lib/CodeGen/RegisterScavenging.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'llvm/lib/CodeGen/RegisterScavenging.cpp') diff --git a/llvm/lib/CodeGen/RegisterScavenging.cpp b/llvm/lib/CodeGen/RegisterScavenging.cpp index d7cd5a096ef..a878c34f9aa 100644 --- a/llvm/lib/CodeGen/RegisterScavenging.cpp +++ b/llvm/lib/CodeGen/RegisterScavenging.cpp @@ -162,8 +162,8 @@ void RegScavenger::unprocess() { determineKillsAndDefs(); // Commit the changes. - setUsed(KillRegUnits); setUnused(DefRegUnits); + setUsed(KillRegUnits); } if (MBBI == MBB->begin()) { -- cgit v1.2.3