[llvm] [MachineVerifier] Disallow subregister defs in SSA form (PR #189403)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 31 01:07:13 PDT 2026
https://github.com/jayfoad updated https://github.com/llvm/llvm-project/pull/189403
>From ff861c587a149553142559a630cf3ec2718495d0 Mon Sep 17 00:00:00 2001
From: Jay Foad <jay.foad at amd.com>
Date: Mon, 30 Mar 2026 16:12:25 +0100
Subject: [PATCH] [MachineVerifier] Disallow subregister defs in SSA form
---
llvm/lib/CodeGen/MachineVerifier.cpp | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp
index e5b145bb82c71..980ff2c6717a6 100644
--- a/llvm/lib/CodeGen/MachineVerifier.cpp
+++ b/llvm/lib/CodeGen/MachineVerifier.cpp
@@ -3140,9 +3140,12 @@ void MachineVerifier::checkLiveness(const MachineOperand *MO, unsigned MONum) {
addRegWithSubRegs(regsDefined, Reg);
// Verify SSA form.
- if (MRI->isSSA() && Reg.isVirtual() &&
- std::next(MRI->def_begin(Reg)) != MRI->def_end())
- report("Multiple virtual register defs in SSA form", MO, MONum);
+ if (MRI->isSSA() && Reg.isVirtual()) {
+ if (!MRI->hasOneDef(Reg))
+ report("Multiple virtual register defs in SSA form", MO, MONum);
+ if (MO->getSubReg())
+ report("Subreg def in SSA form", MO, MONum);
+ }
// Check LiveInts for a live segment, but only for virtual registers.
if (LiveInts && !LiveInts->isNotInMIMap(*MI)) {
More information about the llvm-commits
mailing list