mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-02 08:45:55 +00:00
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
This commit is contained in:
parent
b4a52b04bd
commit
ec243474bc
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user