diff --git a/llvm/lib/Target/X86/X86FastPreTileConfig.cpp b/llvm/lib/Target/X86/X86FastPreTileConfig.cpp --- a/llvm/lib/Target/X86/X86FastPreTileConfig.cpp +++ b/llvm/lib/Target/X86/X86FastPreTileConfig.cpp @@ -663,6 +663,18 @@ CfgSS = -1; unsigned NumVirtRegs = MRI->getNumVirtRegs(); + // Abandon early if there is no tile register to config. + bool HasVirtTileReg = false; + for (unsigned I = 0, E = NumVirtRegs; I != E; ++I) { + Register VirtReg = Register::index2VirtReg(I); + if (MRI->getRegClass(VirtReg)->getID() == X86::TILERegClassID) { + HasVirtTileReg = true; + break; + } + } + if (!HasVirtTileReg) + return false; + StackSlotForVirtReg.resize(NumVirtRegs); MayLiveAcrossBlocks.clear(); // We will create register during config. *3 is to make sure