AMDGPU has two register classes with the same set of registers, and this
was causing this tablegen backend would get stuck in infinite recursion.
Details
Details
Diff Detail
Diff Detail
- Build Status
Buildable 3355 Build 3355: arc lint + arc unit
Event Timeline
Comment Actions
It seems this patch removes ClassB from GPRRegBank:
const uint32_t GPRRegBankCoverageData[] = { // 0-31 (1u << (MyTarget::ClassARegClassID - 0)) | 0, };
Was that the intention? If not, then I think we need to keep track of the classes that visitRegisterBankClasses() has been called on and prevent multiple visits at the top of visitRegisterBankClasses().
test/TableGen/RegisterBankEmitter.td | ||
---|---|---|
12 | Could you add checks for the MyTarget::<Name>RegClassID's you're expecting here? I think you should have ClassB in GPRRegBank but this patch prevents ClassB from being added. |
Comment Actions
Does the patch at https://reviews.llvm.org/D29178 fix your problem? It prevents visitRegisterBankClasses() visiting the same class more than once without changing the classes within each bank.
Comment Actions
Keep track of visited register class and make sure that equivalent register
classes are both added to the CoverageData.
Could you add checks for the MyTarget::<Name>RegClassID's you're expecting here? I think you should have ClassB in GPRRegBank but this patch prevents ClassB from being added.