diff options
author | Chris Lattner <sabre@nondot.org> | 2002-07-16 17:42:54 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-07-16 17:42:54 +0000 |
commit | 6001a929261dea1ac3fb6132243901049015de8c (patch) | |
tree | 8c92d2bacdb7181069c73a94d853601c4e920dc3 | |
parent | 036a13452813e2859708b2c0eaed2f93c2a9be74 (diff) | |
download | bcm5719-llvm-6001a929261dea1ac3fb6132243901049015de8c.tar.gz bcm5719-llvm-6001a929261dea1ac3fb6132243901049015de8c.zip |
* Cleanup pass
* The global variable cannot be internal or else we cannot use it!
* Always add a function to the table, even if it only has a single basic
block.
llvm-svn: 2921
-rw-r--r-- | llvm/lib/Transforms/Instrumentation/ProfilePaths/EmitFunctions/EmitFunctions.cpp | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/ProfilePaths/EmitFunctions/EmitFunctions.cpp b/llvm/lib/Transforms/Instrumentation/ProfilePaths/EmitFunctions/EmitFunctions.cpp index e177f89f32f..2d9b9a7c93c 100644 --- a/llvm/lib/Transforms/Instrumentation/ProfilePaths/EmitFunctions/EmitFunctions.cpp +++ b/llvm/lib/Transforms/Instrumentation/ProfilePaths/EmitFunctions/EmitFunctions.cpp @@ -4,17 +4,11 @@ // //===----------------------------------------------------------------------===// -//#include "llvm/Transforms/Instrumentation/ProfilePaths.h" -//#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" -#include "llvm/Support/CFG.h" #include "llvm/Transforms/Instrumentation/EmitFunctions.h" #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" -#include "llvm/iMemory.h" #include "llvm/Constants.h" #include "llvm/Module.h" -#include <iostream> -#include <fstream> using std::vector; @@ -24,29 +18,28 @@ struct EmitFunctionTable : public Pass { bool run(Module &M); }; -// Create a new pass to add function table +// Create a new pass to add function table // Pass *createEmitFunctionTablePass() { return new EmitFunctionTable(); } -//Per Module pass for inserting function table +// Per Module pass for inserting function table bool EmitFunctionTable::run(Module &M){ vector<const Type*> vType; vector<Constant *> vConsts; - for(Module::iterator MI = M.begin(), ME = M.end(); MI!=ME; ++MI){ - Function *F = MI; - if(F->size()<=1) continue; - ConstantPointerRef *cpref = ConstantPointerRef::get(F); - vType.push_back(MI->getType()); - vConsts.push_back(cpref); - } + for(Module::iterator MI = M.begin(), ME = M.end(); MI!=ME; ++MI) + if (!MI->isExternal()) { + ConstantPointerRef *CP = ConstantPointerRef::get(MI); + vType.push_back(MI->getType()); + vConsts.push_back(CP); + } StructType *sttype = StructType::get(vType); ConstantStruct *cstruct = ConstantStruct::get(sttype, vConsts); - GlobalVariable *gb = new GlobalVariable(cstruct->getType(), true, true, + GlobalVariable *gb = new GlobalVariable(cstruct->getType(), true, false, cstruct, "llvmFunctionTable"); M.getGlobalList().push_back(gb); - return true; // Always modifies function + return true; // Always modifies program } |