Reset the virtual registers in liveins when clearing the virtual registers.

This commit zeroes out the virtual register references in the machine
function's liveins in the class 'MachineRegisterInfo' when the virtual
register definitions are cleared.

Reviewers: Matthias Braun


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243290 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alex Lorenz committed 2015-07-27 17:51:59 +00:00
1 parent a5da4f1f8d
commit 6c304ebd8a
2 files changed
+21

No files matched your search

+2
View File
@@ -116,6 +116,8 @@ void MachineRegisterInfo::clearVirtRegs() {
} }
#endif #endif
VRegInfo.clear(); VRegInfo.clear();
for (auto &I : LiveIns)
I.second = 0;
} }
void MachineRegisterInfo::verifyUseList(unsigned Reg) const { void MachineRegisterInfo::verifyUseList(unsigned Reg) const {
@@ -0,0 +1,19 @@
; RUN: llc -march=x86-64 -o /dev/null -stop-after machine-scheduler %s | FileCheck %s --check-prefix=PRE-RA
; RUN: llc -march=x86-64 -o /dev/null -stop-after prologepilog %s | FileCheck %s --check-prefix=POST-RA
; This test verifies that the virtual register references in machine function's
; liveins are cleared after register allocation.
define i32 @test(i32 %a, i32 %b) {
body:
%c = mul i32 %a, %b
ret i32 %c
}
; PRE-RA: liveins:
; PRE-RA-NEXT: - { reg: '%edi', virtual-reg: '%0' }
; PRE-RA-NEXT: - { reg: '%esi', virtual-reg: '%1' }
; POST-RA: liveins:
; POST-RA-NEXT: - { reg: '%edi' }
; POST-RA-NEXT: - { reg: '%esi' }