[LLVMdev] Bug in LiveIntervals? Please Examine

David Greene dag at cray.com
Fri Jul 17 07:57:09 PDT 2009


In LiveIntervals::processImplicitDefs() we have this:

      for (MachineRegisterInfo::use_iterator UI = mri_->use_begin(Reg),
             UE = mri_->use_end(); UI != UE; ) {
        MachineOperand &RMO = UI.getOperand();
        MachineInstr *RMI = &*UI;
        ++UI;
        MachineBasicBlock *RMBB = RMI->getParent();
        if (RMBB == MBB)
          continue;
        const TargetRegisterClass* RC = mri_->getRegClass(Reg);
        unsigned NewVReg = mri_->createVirtualRegister(RC);
        MachineInstrBuilder MIB =
          BuildMI(*RMBB, RMI, RMI->getDebugLoc(),
                  tii_->get(TargetInstrInfo::IMPLICIT_DEF), NewVReg);
        (*MIB).getOperand(0).setIsUndef();
        RMO.setReg(NewVReg);
        RMO.setIsUndef();
        RMO.setIsKill();
      }

Souldn't there be a call to vrm.grow() after each call to 
mri->createVirtualRegister()?

                            -Dave



More information about the llvm-dev mailing list