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