From ecc99065690f0212995dded115768ec4579cd021 Mon Sep 17 00:00:00 2001 From: Adrian Sampson <adrian@radbox.org> Date: Thu, 23 Jul 2015 10:51:52 -0700 Subject: [PATCH] Use the auto-registration trick --- README.md | 3 +-- skeleton/Skeleton.cpp | 13 ++++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 47d7c17..101ff56 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 02fde99..33e98ce 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); -- GitLab