[llvm] [AMDGPU] Fix machine verification failure from INIT_EXEC lowering (PR #98333)

Carl Ritson via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 10 18:54:53 PDT 2024


================
@@ -1717,7 +1719,7 @@ bool SIWholeQuadMode::runOnMachineFunction(MachineFunction &MF) {
   LIS->removeAllRegUnitsForPhysReg(AMDGPU::SCC);
 
   // If we performed any kills then recompute EXEC
-  if (!KillInstrs.empty())
+  if (!KillInstrs.empty() || !InitExecInstrs.empty())
     LIS->removeAllRegUnitsForPhysReg(AMDGPU::EXEC);
----------------
perlfu wrote:

In this test case they are formed in Register Coalescer when it attempts to merge a copy of EXEC with a virtual and asks for an interval on a EXEC reg unit.

Registered registers still have intervals, they are a sequence of a dead defs, one for each assignment to the register.
You can see this in `LiveIntervals::computeRegUnitRange`.
I do not know the use for this, but assume it is for interference calculations.

https://github.com/llvm/llvm-project/pull/98333


More information about the llvm-commits mailing list