Fix bug: FunctionResolve/2003-07-23-CPR-Reference.ll

This fixes a long time annoyance which caused prototypes for bzero, bcopy,
bcmp, fputs, and fputs_unlocked to never get deleted.  Grr.

llvm-svn: 7285
This commit is contained in:
Chris Lattner 2003-07-23 22:03:18 +00:00
parent 092fb6c66c
commit e9340228c9
1 changed files with 8 additions and 6 deletions

View File

@ -80,12 +80,14 @@ static bool ResolveFunctions(Module &M, std::vector<GlobalValue*> &Globals,
// functions and that the Old function has no varargs fns specified. In
// otherwords it's just <retty> (...)
//
Value *Replacement = Concrete;
if (Concrete->getType() != Old->getType())
Replacement = ConstantExpr::getCast(ConstantPointerRef::get(Concrete),
Old->getType());
NumResolved += Old->use_size();
Old->replaceAllUsesWith(Replacement);
if (!Old->use_empty()) { // Avoid making the CPR unless we really need it
Value *Replacement = Concrete;
if (Concrete->getType() != Old->getType())
Replacement = ConstantExpr::getCast(ConstantPointerRef::get(Concrete),
Old->getType());
NumResolved += Old->use_size();
Old->replaceAllUsesWith(Replacement);
}
// Since there are no uses of Old anymore, remove it from the module.
M.getFunctionList().erase(Old);