diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2006-08-07 23:17:24 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2006-08-07 23:17:24 +0000 |
commit | 05445e30aa95ca53c55ab050fbabc8ca14631516 (patch) | |
tree | 4d632d25303a9f2d31ea0abb85586413211d501a /lib | |
parent | 42fe455d3789b8e7913f463f85cd5606d7fb6efe (diff) | |
download | external_llvm-05445e30aa95ca53c55ab050fbabc8ca14631516.zip external_llvm-05445e30aa95ca53c55ab050fbabc8ca14631516.tar.gz external_llvm-05445e30aa95ca53c55ab050fbabc8ca14631516.tar.bz2 |
Make this example pass use some things from lib/Support (EscapeString,
SlowOperatingInfo, Statistics). Besides providing an example of how to
use these facilities, it also serves to debug problems with runtime linking
when dlopening a loadable module. These three support facilities exercise
different combinations of Text/Weak Weak/Text and Text/Text linking
between the executable and the module.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29552 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Transforms/Hello/Hello.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/Transforms/Hello/Hello.cpp b/lib/Transforms/Hello/Hello.cpp index b7fc870..804c3a7 100644 --- a/lib/Transforms/Hello/Hello.cpp +++ b/lib/Transforms/Hello/Hello.cpp @@ -14,14 +14,23 @@ #include "llvm/Pass.h" #include "llvm/Function.h" +#include "llvm/ADT/StringExtras.h" +#include "llvm/Support/SlowOperationInformer.h" +#include "llvm/ADT/Statistic.h" #include <iostream> using namespace llvm; namespace { + Statistic<int> HelloCounter("hellocount", + "Counts number of functions greeted"); // Hello - The first implementation, without getAnalysisUsage. struct Hello : public FunctionPass { virtual bool runOnFunction(Function &F) { - std::cerr << "Hello: " << F.getName() << "\n"; + SlowOperationInformer soi("EscapeString"); + HelloCounter++; + std::string fname = F.getName(); + EscapeString(fname); + std::cerr << "Hello: " << fname << "\n"; return false; } }; @@ -30,7 +39,11 @@ namespace { // Hello2 - The second implementation with getAnalysisUsage implemented. struct Hello2 : public FunctionPass { virtual bool runOnFunction(Function &F) { - std::cerr << "Hello: " << F.getName() << "\n"; + SlowOperationInformer soi("EscapeString"); + HelloCounter++; + std::string fname = F.getName(); + EscapeString(fname); + std::cerr << "Hello: " << fname << "\n"; return false; } |