mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-21 04:41:34 +00:00
TableGen: Delete some copy constuctors
Some register related machinery relies on uniqued, static pointers for register classes and subregisters, so try to make sure these are never copied.
This commit is contained in:
parent
6f8d4d409e
commit
222988e058
@ -86,6 +86,7 @@ namespace llvm {
|
|||||||
|
|
||||||
CodeGenSubRegIndex(Record *R, unsigned Enum);
|
CodeGenSubRegIndex(Record *R, unsigned Enum);
|
||||||
CodeGenSubRegIndex(StringRef N, StringRef Nspace, unsigned Enum);
|
CodeGenSubRegIndex(StringRef N, StringRef Nspace, unsigned Enum);
|
||||||
|
CodeGenSubRegIndex(CodeGenSubRegIndex&) = delete;
|
||||||
|
|
||||||
const std::string &getName() const { return Name; }
|
const std::string &getName() const { return Name; }
|
||||||
const std::string &getNamespace() const { return Namespace; }
|
const std::string &getNamespace() const { return Namespace; }
|
||||||
@ -442,6 +443,7 @@ namespace llvm {
|
|||||||
std::vector<unsigned> &RegUnits) const;
|
std::vector<unsigned> &RegUnits) const;
|
||||||
|
|
||||||
CodeGenRegisterClass(CodeGenRegBank&, Record *R);
|
CodeGenRegisterClass(CodeGenRegBank&, Record *R);
|
||||||
|
CodeGenRegisterClass(CodeGenRegisterClass&) = delete;
|
||||||
|
|
||||||
// A key representing the parts of a register class used for forming
|
// A key representing the parts of a register class used for forming
|
||||||
// sub-classes. Note the ordering provided by this key is not the same as
|
// sub-classes. Note the ordering provided by this key is not the same as
|
||||||
@ -611,6 +613,7 @@ namespace llvm {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
CodeGenRegBank(RecordKeeper&, const CodeGenHwModes&);
|
CodeGenRegBank(RecordKeeper&, const CodeGenHwModes&);
|
||||||
|
CodeGenRegBank(CodeGenRegBank&) = delete;
|
||||||
|
|
||||||
SetTheory &getSets() { return Sets; }
|
SetTheory &getSets() { return Sets; }
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ bool RISCVCompressInstEmitter::validateRegister(Record *Reg, Record *RegClass) {
|
|||||||
assert(Reg->isSubClassOf("Register") && "Reg record should be a Register\n");
|
assert(Reg->isSubClassOf("Register") && "Reg record should be a Register\n");
|
||||||
assert(RegClass->isSubClassOf("RegisterClass") && "RegClass record should be"
|
assert(RegClass->isSubClassOf("RegisterClass") && "RegClass record should be"
|
||||||
" a RegisterClass\n");
|
" a RegisterClass\n");
|
||||||
CodeGenRegisterClass RC = Target.getRegisterClass(RegClass);
|
const CodeGenRegisterClass &RC = Target.getRegisterClass(RegClass);
|
||||||
const CodeGenRegister *R = Target.getRegisterByName(Reg->getName().lower());
|
const CodeGenRegister *R = Target.getRegisterByName(Reg->getName().lower());
|
||||||
assert((R != nullptr) &&
|
assert((R != nullptr) &&
|
||||||
("Register" + Reg->getName().str() + " not defined!!\n").c_str());
|
("Register" + Reg->getName().str() + " not defined!!\n").c_str());
|
||||||
@ -160,8 +160,8 @@ bool RISCVCompressInstEmitter::validateTypes(Record *DagOpType,
|
|||||||
|
|
||||||
if (DagOpType->isSubClassOf("RegisterClass") &&
|
if (DagOpType->isSubClassOf("RegisterClass") &&
|
||||||
InstOpType->isSubClassOf("RegisterClass")) {
|
InstOpType->isSubClassOf("RegisterClass")) {
|
||||||
CodeGenRegisterClass RC = Target.getRegisterClass(InstOpType);
|
const CodeGenRegisterClass &RC = Target.getRegisterClass(InstOpType);
|
||||||
CodeGenRegisterClass SubRC = Target.getRegisterClass(DagOpType);
|
const CodeGenRegisterClass &SubRC = Target.getRegisterClass(DagOpType);
|
||||||
return RC.hasSubClass(&SubRC);
|
return RC.hasSubClass(&SubRC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user