RecordKeeper &Records;
Record *TargetRec;
- mutable DenseMap<const Record*, CodeGenInstruction*> Instructions;
+ mutable DenseMap<const Record*,
+ std::unique_ptr<CodeGenInstruction>> Instructions;
mutable std::unique_ptr<CodeGenRegBank> RegBank;
mutable std::vector<Record*> RegAltNameIndices;
mutable SmallVector<MVT::SimpleValueType, 8> LegalValueTypes;
CodeGenSchedModels &getSchedModels() const;
private:
- DenseMap<const Record*, CodeGenInstruction*> &getInstructions() const {
+ DenseMap<const Record*, std::unique_ptr<CodeGenInstruction>> &
+ getInstructions() const {
if (Instructions.empty()) ReadInstructions();
return Instructions;
}
CodeGenInstruction &getInstruction(const Record *InstRec) const {
if (Instructions.empty()) ReadInstructions();
- DenseMap<const Record*, CodeGenInstruction*>::iterator I =
- Instructions.find(InstRec);
+ auto I = Instructions.find(InstRec);
assert(I != Instructions.end() && "Not an instruction");
return *I->second;
}
inst_iterator inst_begin() const{return getInstructionsByEnumValue().begin();}
inst_iterator inst_end() const { return getInstructionsByEnumValue().end(); }
iterator_range<inst_iterator> instructions() const {
- return iterator_range<inst_iterator>(inst_begin(), inst_end());
+ return make_range(inst_begin(), inst_end());
}