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 | 2b6d18a64f7603f9bb5716050166e9bb0c101ac3 (patch) | |
tree | dc5f2c1009b7ebcf77ee2f2ca833cc90982eb9bb /llvm/lib/Transforms/Hello/Hello.cpp | |
parent | e6458c3fb23c2aa557cdd568c2533329b2667209 (diff) | |
download | bcm5719-llvm-2b6d18a64f7603f9bb5716050166e9bb0c101ac3.tar.gz bcm5719-llvm-2b6d18a64f7603f9bb5716050166e9bb0c101ac3.zip |
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.
llvm-svn: 29552
Diffstat (limited to 'llvm/lib/Transforms/Hello/Hello.cpp')
-rw-r--r-- | llvm/lib/Transforms/Hello/Hello.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Hello/Hello.cpp b/llvm/lib/Transforms/Hello/Hello.cpp index b7fc870d882..804c3a70b2d 100644 --- a/llvm/lib/Transforms/Hello/Hello.cpp +++ b/llvm/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; } |