Skip to content
Snippets Groups Projects
Select Git revision
  • 0788a15a39599dece96ba5d2f8cb15c7e397939a
  • master default protected
  • exam
  • exper
  • klee
  • simple
  • v0.3.2
  • v0.3.1
  • v0.3.0
  • v0.2.2
  • v0.2.1
  • v0.2.0
  • v0.1.1
  • v0.1.0
14 results

script.sh

Blame
  • Skeleton.cpp 1.17 KiB
    #include "llvm/Pass.h"
    #include "llvm/IR/Function.h"
    #include "llvm/Support/raw_ostream.h"
    #include "llvm/IR/LegacyPassManager.h"
    #include "llvm/Transforms/IPO/PassManagerBuilder.h"
    #include "llvm/Analysis/Trace.h"
    #include "llvm/IR/BasicBlock.h"
    
    using namespace llvm;
    
    namespace
    {
    struct SkeletonPass : public FunctionPass
    {
      static char ID;
      SkeletonPass() : FunctionPass(ID) {}
    
      virtual bool runOnFunction(Function &F)
      {
        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;
      }
    };
    } // namespace
    
    char SkeletonPass::ID = 0;
    
    // Automatically enable the pass.
    // http://adriansampson.net/blog/clangpass.html
    static void registerSkeletonPass(const PassManagerBuilder &,
                                     legacy::PassManagerBase &PM)
    {
      PM.add(new SkeletonPass());
    }
    static RegisterStandardPasses
        RegisterMyPass(PassManagerBuilder::EP_EarlyAsPossible,
                       registerSkeletonPass);