1 //===- RSProfiling.h - Various profiling using random sampling ----------===//
3 // The LLVM Compiler Infrastructure
5 // This file was developed by the LLVM research group and is distributed under
6 // the University of Illinois Open Source 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 {
20 std::set<Value*> profcode;
21 // Lookup up values in profcode
22 virtual bool isProfiling(Value* v);
23 // handles required chaining
24 virtual void getAnalysisUsage(AnalysisUsage &AU) const;
25 // places counter updates in basic blocks and recordes added instructions in
27 void IncrementCounterInBlock(BasicBlock *BB, unsigned CounterNum,
28 GlobalValue *CounterArray);