diff options
author | Chris Lattner <sabre@nondot.org> | 2004-05-12 16:26:18 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-05-12 16:26:18 +0000 |
commit | 66219abac73bedb97764bd6198ce8a6346d5f48c (patch) | |
tree | d68deadb57868a81ea0396135b313f7826fc85ac /llvm/lib/Transforms/Utils | |
parent | 6c0c313daf5fef8c003cd729672d8b4aa082e74a (diff) | |
download | bcm5719-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.cpp | 9 |
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. |