mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Revert r194865 and r194874.
This change is incorrect. If you delete virtual destructor of both a base class and a subclass, then the following code: Base *foo = new Child(); delete foo; will not cause the destructor for members of Child class. As a result, I observe plently of memory leaks. Notable examples I investigated are: ObjectBuffer and ObjectBufferStream, AttributeImpl and StringSAttributeImpl. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194997 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -35,11 +35,9 @@ public:
|
||||
}
|
||||
Type(TypeKind K) : Kind(K) {}
|
||||
virtual unsigned getSizeInBits() const = 0;
|
||||
virtual ~Type();
|
||||
virtual ~Type() {}
|
||||
};
|
||||
|
||||
Type::~Type() {}
|
||||
|
||||
}
|
||||
|
||||
class ExtendedIntegerType : public Type {
|
||||
@@ -47,11 +45,10 @@ class ExtendedIntegerType : public Type {
|
||||
public:
|
||||
explicit ExtendedIntegerType(unsigned bits)
|
||||
: Type(TK_ExtendedIntegerType), BitWidth(bits) {}
|
||||
virtual ~ExtendedIntegerType();
|
||||
static bool classof(const Type *T) {
|
||||
return T->getKind() == TK_ExtendedIntegerType;
|
||||
}
|
||||
virtual unsigned getSizeInBits() const {
|
||||
unsigned getSizeInBits() const {
|
||||
return getBitWidth();
|
||||
}
|
||||
unsigned getBitWidth() const {
|
||||
@@ -59,20 +56,16 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
ExtendedIntegerType::~ExtendedIntegerType() {}
|
||||
|
||||
|
||||
class ExtendedVectorType : public Type {
|
||||
EVT ElementType;
|
||||
unsigned NumElements;
|
||||
public:
|
||||
ExtendedVectorType(EVT elty, unsigned num)
|
||||
: Type(TK_ExtendedVectorType), ElementType(elty), NumElements(num) {}
|
||||
virtual ~ExtendedVectorType();
|
||||
static bool classof(const Type *T) {
|
||||
return T->getKind() == TK_ExtendedVectorType;
|
||||
}
|
||||
virtual unsigned getSizeInBits() const {
|
||||
unsigned getSizeInBits() const {
|
||||
return getNumElements() * getElementType().getSizeInBits();
|
||||
}
|
||||
EVT getElementType() const {
|
||||
@@ -83,9 +76,6 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
ExtendedVectorType::~ExtendedVectorType() {}
|
||||
|
||||
|
||||
static std::map<unsigned, const Type *>
|
||||
ExtendedIntegerTypeMap;
|
||||
static std::map<std::pair<uintptr_t, uintptr_t>, const Type *>
|
||||
|
Reference in New Issue
Block a user