From 9713c4ef4670c3128c8d7be9a9621828ab89ed14 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 16 Jul 2002 17:42:54 +0000 Subject: [PATCH] * 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 --- .../EmitFunctions/EmitFunctions.cpp | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/lib/Transforms/Instrumentation/ProfilePaths/EmitFunctions/EmitFunctions.cpp b/lib/Transforms/Instrumentation/ProfilePaths/EmitFunctions/EmitFunctions.cpp index e177f89f32f..2d9b9a7c93c 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 -#include 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 vType; vector 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 } -- 2.34.1