Skip to content

Commit 383d331

Browse files
weiyu-chensys_zuul
authored andcommitted
Do not include zero-sized variable (e.g., Arg/Retval when there's no stack call) in global RA.
Change-Id: I819534f0ba41962fd78a9a49ed12615cd80af479
1 parent d94f02a commit 383d331

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

visa/GraphColor.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5370,8 +5370,8 @@ void GraphColor::computeSpillCosts(bool useSplitLLRHeuristic)
53705370
//
53715371
else
53725372
{
5373-
float spillCost;
5374-
// NOTE: Add 1 to degree to avoid divide-by-0.
5373+
float spillCost = 0.0f;
5374+
// NOTE: Add 1 to degree to avoid divide-by-0, as a live range may have no neighbors
53755375
if (builder.kernel.getIntKernelAttribute(Attributes::ATTR_Target) == VISA_3D)
53765376
{
53775377
if (useSplitLLRHeuristic)
@@ -5380,7 +5380,8 @@ void GraphColor::computeSpillCosts(bool useSplitLLRHeuristic)
53805380
}
53815381
else
53825382
{
5383-
unsigned short numRows = lrs[i]->getDcl()->getTotalElems() ? lrs[i]->getDcl()->getNumRows() : 1;
5383+
assert(lrs[i]->getDcl()->getTotalElems() > 0);
5384+
unsigned short numRows = lrs[i]->getDcl()->getNumRows();
53845385
spillCost = 1.0f * lrs[i]->getRefCount() * lrs[i]->getRefCount() * lrs[i]->getDcl()->getByteSize() *
53855386
(float)sqrt(lrs[i]->getDcl()->getByteSize())
53865387
/ ((float)sqrt(lrs[i]->getDegree() + 1) * (float)(sqrt(sqrt(numRows))));

visa/RegAlloc.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -602,9 +602,9 @@ bool LivenessAnalysis::livenessCandidate(G4_Declare* decl, bool verifyRA)
602602
}
603603
else if ((selectedRF & decl->getRegFile()))
604604
{
605-
if ((selectedRF & G4_GRF) && (decl->getRegFile() & G4_INPUT))
605+
if (selectedRF & G4_GRF)
606606
{
607-
if (decl->getRegVar()->isPhyRegAssigned() && !decl->getRegVar()->isGreg())
607+
if ((decl->getRegFile() & G4_INPUT) && decl->getRegVar()->isPhyRegAssigned() && !decl->getRegVar()->isGreg())
608608
{
609609
return false;
610610
}

0 commit comments

Comments
 (0)