forked from OSchip/llvm-project
[TableGen] Allow isAllocatable inheritence from any superclass
When setting Allocatable on a generated register class check all superclasses and set Allocatable true if any superclass is allocatable. Without this change generated register classes based on an allocatable class may end up unallocatable due to the topological inheritance order. This change primarily effects AMDGPU backend; however, there are a few changes in MIPs GlobalISel register constraints as a result. Reviewed By: kparzysz Differential Revision: https://reviews.llvm.org/D105967
This commit is contained in:
parent
d695d0d6f6
commit
f5917e0312
|
@ -833,7 +833,10 @@ void CodeGenRegisterClass::inheritProperties(CodeGenRegBank &RegBank) {
|
||||||
Namespace = Super.Namespace;
|
Namespace = Super.Namespace;
|
||||||
VTs = Super.VTs;
|
VTs = Super.VTs;
|
||||||
CopyCost = Super.CopyCost;
|
CopyCost = Super.CopyCost;
|
||||||
Allocatable = Super.Allocatable;
|
// Check for allocatable superclasses.
|
||||||
|
Allocatable = any_of(SuperClasses, [&](const CodeGenRegisterClass *S) {
|
||||||
|
return S->Allocatable;
|
||||||
|
});
|
||||||
AltOrderSelect = Super.AltOrderSelect;
|
AltOrderSelect = Super.AltOrderSelect;
|
||||||
AllocationPriority = Super.AllocationPriority;
|
AllocationPriority = Super.AllocationPriority;
|
||||||
GeneratePressureSet |= Super.GeneratePressureSet;
|
GeneratePressureSet |= Super.GeneratePressureSet;
|
||||||
|
|
Loading…
Reference in New Issue