| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 29932
|
| |
|
|
| |
llvm-svn: 29925
|
| |
|
|
|
|
| |
by Anton Korobeynikov! This is a step towards closing PR786.
llvm-svn: 28447
|
| |
|
|
| |
llvm-svn: 25509
|
| |
|
|
| |
llvm-svn: 24500
|
| |
|
|
|
|
| |
old ones have been updated to implement the interface.
llvm-svn: 24499
|
| |
|
|
| |
llvm-svn: 24496
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
preliminary, but it works on spec on x86 and alpha. The idea is to allow profiling passes to remember what profiling they inserted, then a random sampling framework is inserted which consists of duplicated basic blocks (without profiling), such that at each backedge in the program and entry into every function, the framework chooses whether to use the instrumented code or the instrumentation free code. The goal of such a framework is to make it reasonably cheap to do random sampling of very expensive profiling products (such as load-value profiling).
The code is organized into 3 parts (2 passes)
1) a linked set of profiling passes, which implement an analysis group (linked, like alias analysis are). These insert profiling into the program, and remember what they inserted, so that at a later time they can be queried about any instruction.
2) a pass that handles inserting the random sampling framework. This also has options to control how random samples are choosen. Currently implemented are Global counters, register allocated global counters, and read cycle counter (see? there was a reason for it).
The profiling passes are almost identical to the existing ones (block, function, and null profiling is supported right now), and they are valid passes without the sampling framework (hence the existing passes can be unified with the new ones, not done yet).
Some things are a bit ugly still, but that should be fixed up soon enough.
Other todo? making the counter values not "magic 2^16 -1" values, but dynamically choosable.
llvm-svn: 24493
|
| |
|
|
| |
llvm-svn: 23944
|
| |
|
|
| |
llvm-svn: 23943
|
| |
|
|
| |
llvm-svn: 23940
|
| |
|
|
|
|
| |
This should speed up build times.
llvm-svn: 23933
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
pointer marking the end of the list, the zero *must* be cast to the pointer
type. An un-cast zero is a 32-bit int, and at least on x86_64, gcc will
not extend the zero to 64 bits, thus allowing the upper 32 bits to be
random junk.
The new END_WITH_NULL macro may be used to annotate a such a function
so that GCC (version 4 or newer) will detect the use of un-casted zero
at compile time.
llvm-svn: 23888
|
| |
|
|
| |
llvm-svn: 21480
|
| |
|
|
| |
llvm-svn: 21427
|
| |
|
|
|
|
|
|
| |
using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*.
This patch is contributed by Gabor Greif, thanks!
llvm-svn: 20597
|
| |
|
|
|
|
| |
automatically.
llvm-svn: 19828
|
| |
|
|
| |
llvm-svn: 19320
|
| |
|
|
| |
llvm-svn: 19319
|
| |
|
|
| |
llvm-svn: 19315
|
| |
|
|
| |
llvm-svn: 19305
|
| |
|
|
| |
llvm-svn: 18913
|
| |
|
|
|
|
| |
by Bjørn Wennberg
llvm-svn: 18627
|
| |
|
|
| |
llvm-svn: 18625
|
| |
|
|
| |
llvm-svn: 17992
|
| |
|
|
| |
llvm-svn: 17482
|
| |
|
|
| |
llvm-svn: 17286
|
| |
|
|
| |
llvm-svn: 17155
|
| |
|
|
| |
llvm-svn: 17146
|
| |
|
|
| |
llvm-svn: 17136
|
| |
|
|
|
|
| |
Patch contributed by Morten Ofstad. Thanks Morten!
llvm-svn: 17123
|
| |
|
|
| |
llvm-svn: 16950
|
| |
|
|
| |
llvm-svn: 16893
|
| |
|
|
| |
llvm-svn: 16622
|
| |
|
|
| |
llvm-svn: 16621
|
| |
|
|
| |
llvm-svn: 16620
|
| |
|
|
|
|
|
| |
from ModulePass. Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.
llvm-svn: 16436
|
| |
|
|
|
|
|
|
| |
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
llvm-svn: 16137
|
| |
|
|
| |
llvm-svn: 15334
|
| |
|
|
|
|
| |
"Support/Debug.h".
llvm-svn: 15089
|
| |
|
|
|
|
| |
- Replace ConstantPointerRef usage with GlobalValue usage
llvm-svn: 14953
|
| |
|
|
| |
llvm-svn: 14622
|
| |
|
|
| |
llvm-svn: 14478
|
| |
|
|
| |
llvm-svn: 14369
|
| |
|
|
| |
llvm-svn: 13982
|
| |
|
|
| |
llvm-svn: 13930
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Add better comments, including a better head-of-file comment.
Prune #includes.
Fix a FIXME that Chris put here by using doInitialization().
Use DEBUG() to print out debug msgs.
Give names to basic blocks inserted by this pass.
Expand tabs.
Use InsertProfilingInitCall() from ProfilingUtils to insert the initialize call.
llvm-svn: 13581
|
| |
|
|
| |
llvm-svn: 13340
|
| |
|
|
|
|
| |
which case you'll get a null array and zero passed to the profiling function.
llvm-svn: 13336
|
| |
|
|
| |
llvm-svn: 13335
|