From: David Greene Date: Mon, 23 Jul 2018 20:23:50 +0000 (+0000) Subject: Fix RegScavenger::unprocess X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=820d48f45c648f02fb0356a24702cd654e9881be;p=llvm 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337735 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/RegisterScavenging.cpp b/lib/CodeGen/RegisterScavenging.cpp index d7cd5a096ef..a878c34f9aa 100644 --- a/lib/CodeGen/RegisterScavenging.cpp +++ b/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()) {