summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Linker
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-12-08 14:25:26 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-12-08 14:25:26 +0000
commit3519da82b83a7517d3be6b75d8256bfd8e24efbd (patch)
treef6583f0c975f59e7cb4f8006904c73d00eb8d45b /llvm/lib/Linker
parenta314d1aca490c99ae59a7a806f7ffa283454962b (diff)
downloadbcm5719-llvm-3519da82b83a7517d3be6b75d8256bfd8e24efbd.tar.gz
bcm5719-llvm-3519da82b83a7517d3be6b75d8256bfd8e24efbd.zip
Move the ValueMap lookup inside linkFunctionBody. NFC.
llvm-svn: 223659
Diffstat (limited to 'llvm/lib/Linker')
-rw-r--r--llvm/lib/Linker/LinkModules.cpp31
1 files changed, 15 insertions, 16 deletions
diff --git a/llvm/lib/Linker/LinkModules.cpp b/llvm/lib/Linker/LinkModules.cpp
index b9a05deeb17..06710240c94 100644
--- a/llvm/lib/Linker/LinkModules.cpp
+++ b/llvm/lib/Linker/LinkModules.cpp
@@ -492,7 +492,7 @@ private:
void linkAppendingVarInit(const AppendingVarInfo &AVI);
void linkGlobalInits();
- bool linkFunctionBody(Function *Dst, Function *Src);
+ bool linkFunctionBody(Function &Src);
void linkAliasBodies();
void linkNamedMDNodes();
};
@@ -1169,27 +1169,28 @@ void ModuleLinker::linkGlobalInits() {
/// Copy the source function over into the dest function and fix up references
/// to values. At this point we know that Dest is an external function, and
/// that Src is not.
-bool ModuleLinker::linkFunctionBody(Function *Dst, Function *Src) {
- assert(Src && Dst && Dst->isDeclaration() && !Src->isDeclaration());
+bool ModuleLinker::linkFunctionBody(Function &Src) {
+ Function *Dst = cast<Function>(ValueMap[&Src]);
+ assert(Dst && Dst->isDeclaration() && !Src.isDeclaration());
// Materialize if needed.
- if (std::error_code EC = Src->materialize())
+ if (std::error_code EC = Src.materialize())
return emitError(EC.message());
// Link in the prefix data.
- if (Src->hasPrefixData())
- Dst->setPrefixData(MapValue(Src->getPrefixData(), ValueMap, RF_None,
+ if (Src.hasPrefixData())
+ Dst->setPrefixData(MapValue(Src.getPrefixData(), ValueMap, RF_None,
&TypeMap, &ValMaterializer));
// Link in the prologue data.
- if (Src->hasPrologueData())
- Dst->setPrologueData(MapValue(Src->getPrologueData(), ValueMap, RF_None,
+ if (Src.hasPrologueData())
+ Dst->setPrologueData(MapValue(Src.getPrologueData(), ValueMap, RF_None,
&TypeMap, &ValMaterializer));
// Go through and convert function arguments over, remembering the mapping.
Function::arg_iterator DI = Dst->arg_begin();
- for (Argument &Arg : Src->args()) {
+ for (Argument &Arg : Src.args()) {
DI->setName(Arg.getName()); // Copy the name over.
// Add a mapping to our mapping.
@@ -1198,7 +1199,7 @@ bool ModuleLinker::linkFunctionBody(Function *Dst, Function *Src) {
}
// Splice the body of the source function into the dest function.
- Dst->getBasicBlockList().splice(Dst->end(), Src->getBasicBlockList());
+ Dst->getBasicBlockList().splice(Dst->end(), Src.getBasicBlockList());
// At this point, all of the instructions and values of the function are now
// copied over. The only problem is that they are still referencing values in
@@ -1210,10 +1211,10 @@ bool ModuleLinker::linkFunctionBody(Function *Dst, Function *Src) {
&ValMaterializer);
// There is no need to map the arguments anymore.
- for (Argument &Arg : Src->args())
+ for (Argument &Arg : Src.args())
ValueMap.erase(&Arg);
- Src->Dematerialize();
+ Src.Dematerialize();
return false;
}
@@ -1492,8 +1493,7 @@ bool ModuleLinker::run() {
if (DoNotLinkFromSource.count(&SF))
continue;
- Function *DF = cast<Function>(ValueMap[&SF]);
- if (linkFunctionBody(DF, &SF))
+ if (linkFunctionBody(SF))
return true;
}
@@ -1518,8 +1518,7 @@ bool ModuleLinker::run() {
Function *SF = LazilyLinkFunctions.back();
LazilyLinkFunctions.pop_back();
- Function *DF = cast<Function>(ValueMap[SF]);
- if (linkFunctionBody(DF, SF))
+ if (linkFunctionBody(*SF))
return true;
}
OpenPOWER on IntegriCloud