From 6c304ebd8aa0d0ba11c44804ce53d123bf6117e5 Mon Sep 17 00:00:00 2001 From: Alex Lorenz Date: Mon, 27 Jul 2015 17:51:59 +0000 Subject: [PATCH] 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 --- lib/CodeGen/MachineRegisterInfo.cpp | 2 ++ ...rs-cleared-in-machine-functions-liveins.ll | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 test/CodeGen/X86/virtual-registers-cleared-in-machine-functions-liveins.ll diff --git a/lib/CodeGen/MachineRegisterInfo.cpp b/lib/CodeGen/MachineRegisterInfo.cpp index 5984af87a18..d3704efb631 100644 --- a/lib/CodeGen/MachineRegisterInfo.cpp +++ b/lib/CodeGen/MachineRegisterInfo.cpp @@ -116,6 +116,8 @@ void MachineRegisterInfo::clearVirtRegs() { } #endif VRegInfo.clear(); + for (auto &I : LiveIns) + I.second = 0; } void MachineRegisterInfo::verifyUseList(unsigned Reg) const { diff --git a/test/CodeGen/X86/virtual-registers-cleared-in-machine-functions-liveins.ll b/test/CodeGen/X86/virtual-registers-cleared-in-machine-functions-liveins.ll new file mode 100644 index 00000000000..544539ea84c --- /dev/null +++ b/test/CodeGen/X86/virtual-registers-cleared-in-machine-functions-liveins.ll @@ -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' } -- 2.34.1