mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 21:29:20 +00:00
when the bitcode reader is referencing a paramattr, make sure to bump its refcount.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48276 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0cec956d81
commit
461edd937e
@ -31,6 +31,11 @@ void BitcodeReader::FreeState() {
|
|||||||
Buffer = 0;
|
Buffer = 0;
|
||||||
std::vector<PATypeHolder>().swap(TypeList);
|
std::vector<PATypeHolder>().swap(TypeList);
|
||||||
ValueList.clear();
|
ValueList.clear();
|
||||||
|
|
||||||
|
// Drop references to ParamAttrs.
|
||||||
|
for (unsigned i = 0, e = ParamAttrs.size(); i != e; ++i)
|
||||||
|
ParamAttrs[i]->dropRef();
|
||||||
|
|
||||||
std::vector<const ParamAttrsList*>().swap(ParamAttrs);
|
std::vector<const ParamAttrsList*>().swap(ParamAttrs);
|
||||||
std::vector<BasicBlock*>().swap(FunctionBBs);
|
std::vector<BasicBlock*>().swap(FunctionBBs);
|
||||||
std::vector<Function*>().swap(FunctionsWithBodies);
|
std::vector<Function*>().swap(FunctionsWithBodies);
|
||||||
@ -237,7 +242,13 @@ bool BitcodeReader::ParseParamAttrBlock() {
|
|||||||
if (Record[i+1] != ParamAttr::None)
|
if (Record[i+1] != ParamAttr::None)
|
||||||
Attrs.push_back(ParamAttrsWithIndex::get(Record[i], Record[i+1]));
|
Attrs.push_back(ParamAttrsWithIndex::get(Record[i], Record[i+1]));
|
||||||
}
|
}
|
||||||
ParamAttrs.push_back(Attrs.empty() ? NULL : ParamAttrsList::get(Attrs));
|
if (Attrs.empty()) {
|
||||||
|
ParamAttrs.push_back(0);
|
||||||
|
} else {
|
||||||
|
ParamAttrs.push_back(ParamAttrsList::get(Attrs));
|
||||||
|
ParamAttrs.back()->addRef();
|
||||||
|
}
|
||||||
|
|
||||||
Attrs.clear();
|
Attrs.clear();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user