Skip to content
Snippets Groups Projects
Commit b79af324 authored by Per Lindgren's avatar Per Lindgren
Browse files

function

parent bfddf4b7
No related branches found
No related tags found
No related merge requests found
Pipeline #77 canceled
...@@ -3,26 +3,42 @@ ...@@ -3,26 +3,42 @@
#include "llvm/Support/raw_ostream.h" #include "llvm/Support/raw_ostream.h"
#include "llvm/IR/LegacyPassManager.h" #include "llvm/IR/LegacyPassManager.h"
#include "llvm/Transforms/IPO/PassManagerBuilder.h" #include "llvm/Transforms/IPO/PassManagerBuilder.h"
#include "llvm/Analysis/Trace.h"
#include "llvm/IR/BasicBlock.h"
using namespace llvm; using namespace llvm;
namespace { namespace
struct SkeletonPass : public FunctionPass { {
struct SkeletonPass : public FunctionPass
{
static char ID; static char ID;
SkeletonPass() : FunctionPass(ID) {} SkeletonPass() : FunctionPass(ID) {}
virtual bool runOnFunction(Function &F) { virtual bool runOnFunction(Function &F)
errs() << "I saw a function called " << F.getName() << "!\n"; {
errs() << "Function " << F.getName() << "!\n";
for (Function::BasicBlockListType::iterator i = F.begin(), ie = F.end(); i != ie; ++i)
{
for (llvm::BasicBlock::InstListType::iterator j = i->begin(), je = i->end(); j != je; ++j)
{
Instruction *ii = &*j;
errs() << *ii << "\n";
}
}
return false; return false;
} }
}; };
} } // namespace
char SkeletonPass::ID = 0; char SkeletonPass::ID = 0;
// Automatically enable the pass. // Automatically enable the pass.
// http://adriansampson.net/blog/clangpass.html // http://adriansampson.net/blog/clangpass.html
static void registerSkeletonPass(const PassManagerBuilder &, static void registerSkeletonPass(const PassManagerBuilder &,
legacy::PassManagerBase &PM) { legacy::PassManagerBase &PM)
{
PM.add(new SkeletonPass()); PM.add(new SkeletonPass());
} }
static RegisterStandardPasses static RegisterStandardPasses
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment