diff --git a/README.md b/README.md index 47d7c17586df58780342d5e477bc4173f223c7a6..101ff5617ef28f27374d4b87342b6622dd692b54 100644 --- a/README.md +++ b/README.md @@ -13,5 +13,4 @@ Build: Run: - $ clang -emit-llvm -c -o something.bc something.c - $ opt -load build/lib/SkeletonPass.* -skeleton something.bc + $ clang -Xclang -load -Xclang build/lib/SkeletonPass.* something.c diff --git a/skeleton/Skeleton.cpp b/skeleton/Skeleton.cpp index 02fde997287f0c80edb7342e68c13ec47d4c9545..33e98ced1bcb0ce8d7f1eb60ab2053ee77323271 100644 --- a/skeleton/Skeleton.cpp +++ b/skeleton/Skeleton.cpp @@ -1,6 +1,8 @@ #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" using namespace llvm; namespace { @@ -17,4 +19,13 @@ namespace { } char SkeletonPass::ID = 0; -static RegisterPass<SkeletonPass> X("skeleton", "my great code transform"); + +// 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);