diff options
Diffstat (limited to 'llvm/lib')
| -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  }  | 

