* src/pic/device.{c,h}: added pic14_getPIC()
[fw/sdcc] / src / pic / pcode.c
index c1dd7d392bf28ba5fc9af81fbe7d28e3a116d3bd..4067610bc8d8ade88c00e1173db246cedf7fc96b 100644 (file)
@@ -4607,9 +4607,13 @@ static int BankSelect(pCodeInstruction *pci, int cur_bank, regs *reg)
 #if 1
        /* Always insert BANKSELs rather than try to be clever:
         * Too many bugs in optimized banksels... */
+       static PIC_device *pic;
+       if (!pic) pic = pic14_getPIC();
 
        // possible optimizations:
        // * do not emit BANKSELs for SFRs that are present in all banks (bankmsk == regmap for this register)
+       if (reg && pic && ((reg->alias & pic->bankMask) == pic->bankMask)) return 'L';
+       
        insertBankSel(pci, reg->name); // Let linker choose the bank selection
        return 'L';
 #else