@@ -802,18 +802,21 @@ bool LocalRA::assignUniqueRegisters(bool twoBanksRA, bool twoDirectionsAssign,
802802 : bankAlign;
803803 G4_SubReg_Align subAlign =
804804 builder.GRFAlign () ? builder.getGRFAlign () : gra.getSubRegAlign (dcl);
805+ auto dclLR = gra.getLocalLR (dcl);
805806
806807 if (assignFromFront) {
807808 BankAlign preferBank = BankAlign::Either;
808809 unsigned short occupiedBundles =
809810 getOccupiedBundle (builder, gra, dcl, preferBank);
810811 nrows = phyRegMgr.findFreeRegs (
811812 sizeInWords, assignAlign, subAlign, regNum, subregNum, 0 ,
812- numRegLRA - 1 , occupiedBundles, 0 , false , emptyForbidden);
813+ numRegLRA - 1 , occupiedBundles, 0 , false ,
814+ dclLR ? dclLR->getForbidden () : emptyForbidden);
813815 } else {
814- nrows = phyRegMgr.findFreeRegs (sizeInWords, assignAlign, subAlign,
815- regNum, subregNum, numRegLRA - 1 , 0 , 0 ,
816- 0 , false , emptyForbidden);
816+ nrows = phyRegMgr.findFreeRegs (
817+ sizeInWords, assignAlign, subAlign, regNum, subregNum,
818+ numRegLRA - 1 , 0 , 0 , 0 , false ,
819+ dclLR ? dclLR->getForbidden () : emptyForbidden);
817820 }
818821
819822 if (nrows) {
0 commit comments