diff options
author | Jeffrey Yasskin <jyasskin@google.com> | 2010-03-28 01:03:47 +0000 |
---|---|---|
committer | Jeffrey Yasskin <jyasskin@google.com> | 2010-03-28 01:03:47 +0000 |
commit | ec243474bc652de18eca62830b4bc12d35d52d9a (patch) | |
tree | e777760e07ad2a69e4960bfa0105da8f5b10f8ad /lib/VMCore | |
parent | b4a52b04bda21262dd742bb7add82b4842311ed3 (diff) | |
download | external_llvm-ec243474bc652de18eca62830b4bc12d35d52d9a.zip external_llvm-ec243474bc652de18eca62830b4bc12d35d52d9a.tar.gz external_llvm-ec243474bc652de18eca62830b4bc12d35d52d9a.tar.bz2 |
Oops, r98447 dropped the reference to ForwardType in the wrong place in
Type::destroy(), so it got skipped for FunctionTypes, StructTypes, and
UnionTypes. This fixes the resulting leaks in test/Feature/opaquetypes.ll and
test/Integer/opaquetypes_bt.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99732 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore')
-rw-r--r-- | lib/VMCore/Type.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/VMCore/Type.cpp b/lib/VMCore/Type.cpp index 2a0cfa8..5f9c11f 100644 --- a/lib/VMCore/Type.cpp +++ b/lib/VMCore/Type.cpp @@ -57,6 +57,11 @@ void AbstractTypeUser::setType(Value *V, const Type *NewTy) { /// need for a std::vector to be used in the Type class itself. /// @brief Type destruction function void Type::destroy() const { + // Nothing calls getForwardedType from here on. + if (ForwardType && ForwardType->isAbstract()) { + ForwardType->dropRef(); + ForwardType = NULL; + } // Structures and Functions allocate their contained types past the end of // the type object itself. These need to be destroyed differently than the @@ -87,11 +92,6 @@ void Type::destroy() const { pImpl->OpaqueTypes.erase(opaque_this); } - if (ForwardType && ForwardType->isAbstract()) { - ForwardType->dropRef(); - ForwardType = NULL; - } - // For all the other type subclasses, there is either no contained types or // just one (all Sequentials). For Sequentials, the PATypeHandle is not // allocated past the type object, its included directly in the SequentialType |