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 | 9713c4ef4670c3128c8d7be9a9621828ab89ed14 (patch) | |
tree | aabc1e936660ef87859d3ca98434282e321ff540 /lib/Transforms | |
parent | 131454e91d51c01fa0193630390116ab55c7886e (diff) | |
download | external_llvm-9713c4ef4670c3128c8d7be9a9621828ab89ed14.zip external_llvm-9713c4ef4670c3128c8d7be9a9621828ab89ed14.tar.gz external_llvm-9713c4ef4670c3128c8d7be9a9621828ab89ed14.tar.bz2 |
* 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2921 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms')
-rw-r--r-- | lib/Transforms/Instrumentation/ProfilePaths/EmitFunctions/EmitFunctions.cpp | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/lib/Transforms/Instrumentation/ProfilePaths/EmitFunctions/EmitFunctions.cpp b/lib/Transforms/Instrumentation/ProfilePaths/EmitFunctions/EmitFunctions.cpp index e177f89..2d9b9a7 100644 --- a/lib/Transforms/Instrumentation/ProfilePaths/EmitFunctions/EmitFunctions.cpp +++ b/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 } |