[llvm] [MachineVerifier] physical register should not be a live-in for non e… (PR #194550)
Zeng Wu via llvm-commits
llvm-commits at lists.llvm.org
Thu May 7 09:56:26 PDT 2026
https://github.com/zwu-2025 updated https://github.com/llvm/llvm-project/pull/194550
>From c398f42bec9718324af3ef82e63e1bb1cff1bec2 Mon Sep 17 00:00:00 2001
From: zwu-2025 <Zeng.Wu2 at amd.com>
Date: Tue, 28 Apr 2026 06:09:39 +0000
Subject: [PATCH 1/3] [MachineVerifier] physical register should not be a
live-in for non entry block
---
llvm/lib/CodeGen/MachineVerifier.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp
index e5b145bb82c71..d7594974c620c 100644
--- a/llvm/lib/CodeGen/MachineVerifier.cpp
+++ b/llvm/lib/CodeGen/MachineVerifier.cpp
@@ -893,6 +893,12 @@ MachineVerifier::visitMachineBasicBlockBefore(const MachineBasicBlock *MBB) {
regsLive.clear();
if (MRI->tracksLiveness()) {
for (const auto &LI : MBB->liveins()) {
+ if (MRI->isSSA() && LI.PhysReg.isPhysical() && !MBB->isEntryBlock() &&
+ !MBB->isEHPad()) {
+ report("Physical registers should not be a live-in during SSA form",
+ MBB);
+ continue;
+ }
if (!LI.PhysReg.isPhysical()) {
report("MBB live-in list contains non-physical register", MBB);
continue;
>From b26bb85952346b6f690d3427afaadbad63827bda Mon Sep 17 00:00:00 2001
From: zwu-2025 <Zeng.Wu2 at amd.com>
Date: Wed, 6 May 2026 21:34:38 +0000
Subject: [PATCH 2/3] comments
---
llvm/lib/CodeGen/MachineVerifier.cpp | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp
index d7594974c620c..b42747d7f3faa 100644
--- a/llvm/lib/CodeGen/MachineVerifier.cpp
+++ b/llvm/lib/CodeGen/MachineVerifier.cpp
@@ -893,16 +893,16 @@ MachineVerifier::visitMachineBasicBlockBefore(const MachineBasicBlock *MBB) {
regsLive.clear();
if (MRI->tracksLiveness()) {
for (const auto &LI : MBB->liveins()) {
+ if (!LI.PhysReg.isPhysical()) {
+ report("MBB live-in list contains non-physical register", MBB);
+ continue;
+ }
if (MRI->isSSA() && LI.PhysReg.isPhysical() && !MBB->isEntryBlock() &&
!MBB->isEHPad()) {
report("Physical registers should not be a live-in during SSA form",
MBB);
continue;
}
- if (!LI.PhysReg.isPhysical()) {
- report("MBB live-in list contains non-physical register", MBB);
- continue;
- }
regsLive.insert_range(TRI->subregs_inclusive(LI.PhysReg));
}
}
>From bd664c4f6e46c9a042744ab552d3413b315e43a5 Mon Sep 17 00:00:00 2001
From: zwu-2025 <Zeng.Wu2 at amd.com>
Date: Thu, 7 May 2026 16:56:02 +0000
Subject: [PATCH 3/3] remove redundant check
---
llvm/lib/CodeGen/MachineVerifier.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp
index b42747d7f3faa..3db78474da259 100644
--- a/llvm/lib/CodeGen/MachineVerifier.cpp
+++ b/llvm/lib/CodeGen/MachineVerifier.cpp
@@ -897,8 +897,7 @@ MachineVerifier::visitMachineBasicBlockBefore(const MachineBasicBlock *MBB) {
report("MBB live-in list contains non-physical register", MBB);
continue;
}
- if (MRI->isSSA() && LI.PhysReg.isPhysical() && !MBB->isEntryBlock() &&
- !MBB->isEHPad()) {
+ if (MRI->isSSA() && !MBB->isEntryBlock() && !MBB->isEHPad()) {
report("Physical registers should not be a live-in during SSA form",
MBB);
continue;
More information about the llvm-commits
mailing list