1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00

Fix a use after free error caught by the valgrind builders.

llvm-svn: 110601
This commit is contained in:
Nick Lewycky 2010-08-09 21:03:28 +00:00
parent 2d9b975304
commit 920eab5cc1

View File

@ -559,7 +559,7 @@ void MergeFunctions::WriteThunk(Function *F, Function *G) const {
} }
/// MergeTwoFunctions - Merge two equivalent functions. Upon completion, /// MergeTwoFunctions - Merge two equivalent functions. Upon completion,
/// FnVec[j] should never be visited again. /// FnVec[j] is deleted but not removed from the vector.
void MergeFunctions::MergeTwoFunctions(std::vector<Function *> &FnVec, void MergeFunctions::MergeTwoFunctions(std::vector<Function *> &FnVec,
unsigned i, unsigned j) const { unsigned i, unsigned j) const {
Function *F = FnVec[i]; Function *F = FnVec[i];
@ -580,10 +580,12 @@ void MergeFunctions::MergeTwoFunctions(std::vector<Function *> &FnVec,
H->takeName(F); H->takeName(F);
F->replaceAllUsesWith(H); F->replaceAllUsesWith(H);
unsigned MaxAlignment = std::max(G->getAlignment(), H->getAlignment());
WriteThunk(F, G); WriteThunk(F, G);
WriteThunk(F, H); WriteThunk(F, H);
F->setAlignment(std::max(G->getAlignment(), H->getAlignment())); F->setAlignment(MaxAlignment);
F->setLinkage(GlobalValue::InternalLinkage); F->setLinkage(GlobalValue::InternalLinkage);
} else { } else {
WriteThunk(F, G); WriteThunk(F, G);