1 //===- RSProfiling.h - Various profiling using random sampling ----------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // See notes in RSProfiling.cpp
12 //===----------------------------------------------------------------------===//
13 #include "llvm/Transforms/RSProfiling.h"
17 /// RSProfilers_std - a simple support class for profilers that handles most
18 /// of the work of chaining and tracking inserted code.
19 struct RSProfilers_std
: public RSProfilers
{
21 std::set
<Value
*> profcode
;
22 // Lookup up values in profcode
23 virtual bool isProfiling(Value
* v
);
24 // handles required chaining
25 virtual void getAnalysisUsage(AnalysisUsage
&AU
) const;
26 // places counter updates in basic blocks and recordes added instructions in
28 void IncrementCounterInBlock(BasicBlock
*BB
, unsigned CounterNum
,
29 GlobalValue
*CounterArray
);