summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-05-12 16:26:18 +0000
committerChris Lattner <sabre@nondot.org>2004-05-12 16:26:18 +0000
commit66219abac73bedb97764bd6198ce8a6346d5f48c (patch)
treed68deadb57868a81ea0396135b313f7826fc85ac /llvm/lib/Transforms/Utils
parent6c0c313daf5fef8c003cd729672d8b4aa082e74a (diff)
downloadbcm5719-llvm-66219abac73bedb97764bd6198ce8a6346d5f48c.tar.gz
bcm5719-llvm-66219abac73bedb97764bd6198ce8a6346d5f48c.zip
Do not pass in the same argument to the extracted function more than once, and
give the extracted function a more useful name than just foo_code. llvm-svn: 13493
Diffstat (limited to 'llvm/lib/Transforms/Utils')
-rw-r--r--llvm/lib/Transforms/Utils/CodeExtractor.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/CodeExtractor.cpp b/llvm/lib/Transforms/Utils/CodeExtractor.cpp
index e3259217a0d..4d1093b739d 100644
--- a/llvm/lib/Transforms/Utils/CodeExtractor.cpp
+++ b/llvm/lib/Transforms/Utils/CodeExtractor.cpp
@@ -226,6 +226,12 @@ void CodeExtractor::findInputsOutputs(Values &inputs, Values &outputs) {
} // for: basic blocks
NumExitBlocks = ExitBlocks.size();
+
+ // Eliminate duplicates.
+ std::sort(inputs.begin(), inputs.end());
+ inputs.erase(std::unique(inputs.begin(), inputs.end()), inputs.end());
+ std::sort(outputs.begin(), outputs.end());
+ outputs.erase(std::unique(outputs.begin(), outputs.end()), outputs.end());
}
/// constructFunction - make a function based on inputs and outputs, as follows:
@@ -284,7 +290,8 @@ Function *CodeExtractor::constructFunction(const Values &inputs,
// Create the new function
Function *newFunction = new Function(funcType,
GlobalValue::InternalLinkage,
- oldFunction->getName() + "_code", M);
+ oldFunction->getName() + "_" +
+ header->getName(), M);
newFunction->getBasicBlockList().push_back(newRootNode);
// Create an iterator to name all of the arguments we inserted.
OpenPOWER on IntegriCloud