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 2015-07-27 17:51:59 +00:00
parent a5da4f1f8d
commit 6c304ebd8a
2 changed files with 21 additions and 0 deletions

View File

@ -116,6 +116,8 @@ void MachineRegisterInfo::clearVirtRegs() {
}
#endif
VRegInfo.clear();
for (auto &I : LiveIns)
I.second = 0;
}
void MachineRegisterInfo::verifyUseList(unsigned Reg) const {

View File

@ -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' }