mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
Make sure that at least one virtual method is defined in a .cpp file to avoid
having the compiler emit RTTI and vtables to EVERY translation unit. llvm-svn: 11871
This commit is contained in:
parent
e07d786aa6
commit
aa6f7cb4e4
@ -68,7 +68,7 @@ class Annotation {
|
||||
Annotation *Next; // The next annotation in the linked list
|
||||
public:
|
||||
inline Annotation(AnnotationID id) : ID(id), Next(0) {}
|
||||
virtual ~Annotation() {} // Designed to be subclassed
|
||||
virtual ~Annotation(); // Designed to be subclassed
|
||||
|
||||
// getID - Return the unique ID# of this annotation
|
||||
inline AnnotationID getID() const { return ID; }
|
||||
@ -95,14 +95,7 @@ class Annotable {
|
||||
void operator=(const Annotable &); // Do not implement
|
||||
public:
|
||||
Annotable() : AnnotationList(0) {}
|
||||
virtual ~Annotable() { // Virtual because it's designed to be subclassed...
|
||||
Annotation *A = AnnotationList;
|
||||
while (A) {
|
||||
Annotation *Next = A->getNext();
|
||||
delete A;
|
||||
A = Next;
|
||||
}
|
||||
}
|
||||
virtual ~Annotable(); // Virtual because it's designed to be subclassed...
|
||||
|
||||
// getAnnotation - Search the list for annotations of the specified ID. The
|
||||
// pointer returned is either null (if no annotations of the specified ID
|
||||
|
@ -44,7 +44,7 @@ class DerivedType;
|
||||
|
||||
class AbstractTypeUser {
|
||||
protected:
|
||||
virtual ~AbstractTypeUser() {} // Derive from me
|
||||
virtual ~AbstractTypeUser(); // Derive from me
|
||||
public:
|
||||
|
||||
/// refineAbstractType - The callback method invoked when an abstract type is
|
||||
|
@ -15,6 +15,18 @@
|
||||
#include "Support/Annotation.h"
|
||||
using namespace llvm;
|
||||
|
||||
Annotation::~Annotation() {} // Designed to be subclassed
|
||||
|
||||
Annotable::~Annotable() { // Virtual because it's designed to be subclassed...
|
||||
Annotation *A = AnnotationList;
|
||||
while (A) {
|
||||
Annotation *Next = A->getNext();
|
||||
delete A;
|
||||
A = Next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
typedef std::map<const std::string, unsigned> IDMapType;
|
||||
static unsigned IDCounter = 0; // Unique ID counter
|
||||
|
||||
@ -41,7 +53,6 @@ static void eraseFromFactMap(unsigned ID) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
AnnotationID AnnotationManager::getID(const std::string &Name) { // Name -> ID
|
||||
IDMapType::iterator I = getIDMap().find(Name);
|
||||
if (I == getIDMap().end()) {
|
||||
|
@ -26,6 +26,7 @@ using namespace llvm;
|
||||
//
|
||||
//#define DEBUG_MERGE_TYPES 1
|
||||
|
||||
AbstractTypeUser::~AbstractTypeUser() {}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Type Class Implementation
|
||||
|
Loading…
Reference in New Issue
Block a user