diff options
author | Alexey Samsonov <samsonov@google.com> | 2013-11-18 09:31:53 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2013-11-18 09:31:53 +0000 |
commit | 49109a279c6b7b3622fa0227f6c77a96d075f718 (patch) | |
tree | d3ee87a1f6131cd29380a4ce6dd84aa232b2fa4c /llvm/tools/llvm-stress | |
parent | 6588c1a638032c8146be7f5d62a125f5d89dea76 (diff) | |
download | bcm5719-llvm-49109a279c6b7b3622fa0227f6c77a96d075f718.tar.gz bcm5719-llvm-49109a279c6b7b3622fa0227f6c77a96d075f718.zip |
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.
llvm-svn: 194997
Diffstat (limited to 'llvm/tools/llvm-stress')
-rw-r--r-- | llvm/tools/llvm-stress/llvm-stress.cpp | 40 |
1 files changed, 1 insertions, 39 deletions
diff --git a/llvm/tools/llvm-stress/llvm-stress.cpp b/llvm/tools/llvm-stress/llvm-stress.cpp index d262a69d932..15f7abf70e9 100644 --- a/llvm/tools/llvm-stress/llvm-stress.cpp +++ b/llvm/tools/llvm-stress/llvm-stress.cpp @@ -128,7 +128,7 @@ public: BB(Block),PT(PT),Ran(R),Context(BB->getContext()) {} /// virtual D'tor to silence warnings. - virtual ~Modifier(); + virtual ~Modifier() {} /// Add a new instruction. virtual void Act() = 0; @@ -285,11 +285,8 @@ protected: LLVMContext &Context; }; -Modifier::~Modifier() {} - struct LoadModifier: public Modifier { LoadModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R) {} - virtual ~LoadModifier(); virtual void Act() { // Try to use predefined pointers. If non exist, use undef pointer value; Value *Ptr = getRandomPointerValue(); @@ -298,11 +295,8 @@ struct LoadModifier: public Modifier { } }; -LoadModifier::~LoadModifier() {} - struct StoreModifier: public Modifier { StoreModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R) {} - virtual ~StoreModifier(); virtual void Act() { // Try to use predefined pointers. If non exist, use undef pointer value; Value *Ptr = getRandomPointerValue(); @@ -319,11 +313,8 @@ struct StoreModifier: public Modifier { } }; -StoreModifier::~StoreModifier() {} - struct BinModifier: public Modifier { BinModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R) {} - virtual ~BinModifier(); virtual void Act() { Value *Val0 = getRandomVal(); @@ -365,13 +356,9 @@ struct BinModifier: public Modifier { } }; -BinModifier::~BinModifier() {} - /// Generate constant values. struct ConstModifier: public Modifier { ConstModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R) {} - virtual ~ConstModifier(); - virtual void Act() { Type *Ty = pickType(); @@ -416,11 +403,8 @@ struct ConstModifier: public Modifier { } }; -ConstModifier::~ConstModifier() {} - struct AllocaModifier: public Modifier { AllocaModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R){} - virtual ~AllocaModifier(); virtual void Act() { Type *Tp = pickType(); @@ -428,12 +412,9 @@ struct AllocaModifier: public Modifier { } }; -AllocaModifier::~AllocaModifier() {} - struct ExtractElementModifier: public Modifier { ExtractElementModifier(BasicBlock *BB, PieceTable *PT, Random *R): Modifier(BB, PT, R) {} - virtual ~ExtractElementModifier(); virtual void Act() { Value *Val0 = getRandomVectorValue(); @@ -445,12 +426,8 @@ struct ExtractElementModifier: public Modifier { } }; -ExtractElementModifier::~ExtractElementModifier() {} - struct ShuffModifier: public Modifier { ShuffModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R) {} - virtual ~ShuffModifier(); - virtual void Act() { Value *Val0 = getRandomVectorValue(); @@ -476,12 +453,9 @@ struct ShuffModifier: public Modifier { } }; -ShuffModifier::~ShuffModifier() {} - struct InsertElementModifier: public Modifier { InsertElementModifier(BasicBlock *BB, PieceTable *PT, Random *R): Modifier(BB, PT, R) {} - virtual ~InsertElementModifier(); virtual void Act() { Value *Val0 = getRandomVectorValue(); @@ -496,12 +470,8 @@ struct InsertElementModifier: public Modifier { }; -InsertElementModifier::~InsertElementModifier() {} - struct CastModifier: public Modifier { CastModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R) {} - virtual ~CastModifier(); - virtual void Act() { Value *V = getRandomVal(); @@ -585,12 +555,9 @@ struct CastModifier: public Modifier { }; -CastModifier::~CastModifier() {} - struct SelectModifier: public Modifier { SelectModifier(BasicBlock *BB, PieceTable *PT, Random *R): Modifier(BB, PT, R) {} - virtual ~SelectModifier(); virtual void Act() { // Try a bunch of different select configuration until a valid one is found. @@ -612,12 +579,9 @@ struct SelectModifier: public Modifier { } }; -SelectModifier::~SelectModifier() {} struct CmpModifier: public Modifier { CmpModifier(BasicBlock *BB, PieceTable *PT, Random *R):Modifier(BB, PT, R) {} - virtual ~CmpModifier(); - virtual void Act() { Value *Val0 = getRandomVal(); @@ -643,8 +607,6 @@ struct CmpModifier: public Modifier { } }; -CmpModifier::~CmpModifier() {} - void FillFunction(Function *F, Random &R) { // Create a legal entry block. BasicBlock *BB = BasicBlock::Create(F->getContext(), "BB", F); |