Jeff Cohen
7ff44ec372
Fix VC++ warning.
...
llvm-svn: 24496
2005-11-28 06:45:57 +00:00
Andrew Lenharth
93e59f6032
Random sampling (aka Arnold and Ryder) profiling. This is still 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
2005-11-28 00:58:09 +00:00
Chris Lattner
b37336978f
Remove some beta code that no longer has an owner.
...
llvm-svn: 23944
2005-10-24 02:32:41 +00:00
Chris Lattner
f9998d9704
Do not build the ProfilePaths directory anymore
...
llvm-svn: 23943
2005-10-24 02:31:49 +00:00
Chris Lattner
bde3845548
DONT_BUILD_RELINKED is gone and implied by BUILD_ARCHIVE now
...
llvm-svn: 23940
2005-10-24 02:26:13 +00:00
Chris Lattner
8c087e962c
Only build .a file versions of these libraries, instead of .a and .o versions.
...
This should speed up build times.
llvm-svn: 23933
2005-10-24 01:59:48 +00:00
Jeff Cohen
11e26b52b2
When a function takes a variable number of pointer arguments, with a zero
...
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
2005-10-23 04:37:20 +00:00
Jeff Cohen
82639853c0
Eliminate tabs and trailing spaces
...
llvm-svn: 21480
2005-04-23 21:38:35 +00:00
Misha Brukman
b1c9317bb4
Remove trailing whitespace
...
llvm-svn: 21427
2005-04-21 23:48:37 +00:00
Chris Lattner
531f9e92d4
This mega patch converts us from using Function::a{iterator|begin|end} to
...
using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*.
This patch is contributed by Gabor Greif, thanks!
llvm-svn: 20597
2005-03-15 04:54:21 +00:00
Alkis Evlogimenos
fbd921987f
Add a dependency to the trace library so that it gets pulled in
...
automatically.
llvm-svn: 19828
2005-01-25 16:23:57 +00:00
Misha Brukman
417ca179a9
Convert tabs to spaces
...
llvm-svn: 19320
2005-01-07 07:05:34 +00:00
Jeff Cohen
9a7ac16214
Add missing createXxxPass functions
...
llvm-svn: 19319
2005-01-07 06:57:28 +00:00
Jeff Cohen
844410b48e
Add missing include
...
llvm-svn: 19315
2005-01-07 05:42:13 +00:00
Jeff Cohen
27595a4aec
Add missing include
...
llvm-svn: 19305
2005-01-06 05:46:44 +00:00
Brian Gaeke
f9639d2a74
Fix link error in PPC optimized build of 'opt'.
...
llvm-svn: 18913
2004-12-13 21:28:39 +00:00
Chris Lattner
674ce86cd0
Add support for compilers without argument dependent name lookup, contributed
...
by Bjørn Wennberg
llvm-svn: 18627
2004-12-08 16:12:20 +00:00
Chris Lattner
407000c497
Remove unneeded class qualifier, contributed by Bjørn Wennberg
...
llvm-svn: 18625
2004-12-08 16:05:02 +00:00
Chris Lattner
d137be2d0d
CPR is dead.
...
llvm-svn: 17992
2004-11-19 16:24:57 +00:00
Chris Lattner
3c670cb65a
Remove dead vars
...
llvm-svn: 17482
2004-11-05 04:46:22 +00:00
Reid Spencer
57cbe39d1e
Change Library Names Not To Conflict With Others When Installed
...
llvm-svn: 17286
2004-10-27 23:18:45 +00:00
Reid Spencer
c1c320c335
We won't use automake
...
llvm-svn: 17155
2004-10-22 03:35:04 +00:00
Brian Gaeke
c9d8b4d45c
Explain what this pass does.
...
llvm-svn: 17146
2004-10-20 19:38:58 +00:00
Reid Spencer
6a11a75f31
Initial automake generated Makefile template
...
llvm-svn: 17136
2004-10-18 23:55:41 +00:00
Reid Spencer
ce0783318b
Correction to allow compilation with Visual C++.
...
Patch contributed by Morten Ofstad. Thanks Morten!
llvm-svn: 17123
2004-10-18 14:38:48 +00:00
Reid Spencer
ace94df71f
Update to reflect changes in Makefile rules.
...
llvm-svn: 16950
2004-10-13 11:46:52 +00:00
Reid Spencer
97327f05fc
Initial version of automake Makefile.am file.
...
llvm-svn: 16893
2004-10-10 22:20:40 +00:00
Brian Gaeke
33e834ebb0
Add accessor function.
...
llvm-svn: 16622
2004-09-30 20:14:29 +00:00
Brian Gaeke
5a89bde564
Correct type of accessor functions.
...
llvm-svn: 16621
2004-09-30 20:14:18 +00:00
Brian Gaeke
e80d4cd66b
Namespacify. Add accessor function.
...
llvm-svn: 16620
2004-09-30 20:14:07 +00:00
Chris Lattner
4f2cf030e8
'Pass' should now not be derived from by clients. Instead, they should derive
...
from ModulePass. Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.
llvm-svn: 16436
2004-09-20 04:48:05 +00:00
Reid Spencer
7c16caa336
Changes For Bug 352
...
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
2004-09-01 22:55:40 +00:00
Misha Brukman
63b38bd2ed
Fix #includes of i*.h => Instructions.h as per PR403.
...
llvm-svn: 15334
2004-07-29 17:30:56 +00:00
Brian Gaeke
902dcf0729
These files don't need to include <iostream> since they include "Support/Debug.h".
...
llvm-svn: 15089
2004-07-21 20:50:33 +00:00
Reid Spencer
cb3fb5d4f5
bug 122:
...
- Replace ConstantPointerRef usage with GlobalValue usage
llvm-svn: 14953
2004-07-18 00:44:37 +00:00
Reid Spencer
eb04d9bcb4
Add #include <iostream> since Value.h does not #include it any more.
...
llvm-svn: 14622
2004-07-04 12:19:56 +00:00
Vikram S. Adve
1097ed8467
Restoring this file.
...
llvm-svn: 14478
2004-06-29 14:20:27 +00:00
Vikram S. Adve
463556f889
This file is unused, and duplicates functionality in TraceValues.cpp.
...
llvm-svn: 14369
2004-06-24 20:16:22 +00:00
Brian Gaeke
a9c5779a86
Expand head-of-file comment.
...
llvm-svn: 13982
2004-06-03 05:03:02 +00:00
Brian Gaeke
c0b9b83450
Use new form of unconditional branch constructor.
...
llvm-svn: 13930
2004-06-01 20:06:10 +00:00
Brian Gaeke
27e4943516
Clean up this pass somewhat:
...
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
2004-05-14 21:21:52 +00:00
Brian Gaeke
5237476f75
Fix typo
...
llvm-svn: 13340
2004-05-03 23:52:07 +00:00
Brian Gaeke
e96196081e
In InsertProfilingInitCall(), make it legal to pass in a null array, in
...
which case you'll get a null array and zero passed to the profiling function.
llvm-svn: 13336
2004-05-03 22:06:33 +00:00
Brian Gaeke
088dd3e121
Add initial implementation of basic-block tracing instrumentation pass.
...
llvm-svn: 13335
2004-05-03 22:06:32 +00:00
Chris Lattner
69193f93b6
Support getelementptr instructions which use uint's to index into structure
...
types and can have arbitrary 32- and 64-bit integer types indexing into
sequential types.
llvm-svn: 12653
2004-04-05 01:30:19 +00:00
Brian Gaeke
ef327be6ed
Start cleaning up this pass so that I can debug it.
...
llvm-svn: 12548
2004-03-30 19:53:46 +00:00
Chris Lattner
721264aecc
Initial support for edge profiling
...
llvm-svn: 12225
2004-03-08 17:54:34 +00:00
Chris Lattner
dae48f93b0
Split utility functions out of BlockProfiling.cpp
...
llvm-svn: 12224
2004-03-08 17:06:13 +00:00
Chris Lattner
d91e676700
finegrainify namespacification
...
llvm-svn: 12221
2004-03-08 16:45:53 +00:00
Chris Lattner
37a716fa80
Remove dependence on return type of ConstantStruct::get
...
llvm-svn: 11466
2004-02-15 04:07:32 +00:00
Chris Lattner
c75bf528c1
Remove dependence on the return type of ConstantArray::get
...
llvm-svn: 11463
2004-02-15 04:05:58 +00:00
Chris Lattner
3232bbb9d8
initialization calls now return argc. If the program uses the argc value
...
passed into main, make sure they use the return value of the init call
instead of the one passed in.
llvm-svn: 11262
2004-02-10 17:41:01 +00:00
Chris Lattner
df3c342a4c
Finegrainify namespacification
...
llvm-svn: 10727
2004-01-09 06:12:26 +00:00
Chris Lattner
2af517281d
Start using the nicer terminator auto-insertion API
...
llvm-svn: 10111
2003-11-20 18:25:24 +00:00
Brian Gaeke
960707c335
Put all LLVM code into the llvm namespace, as per bug 109.
...
llvm-svn: 9903
2003-11-11 22:41:34 +00:00
Chris Lattner
813ec04735
Be gcc 3.4 clean
...
llvm-svn: 9725
2003-11-05 06:12:18 +00:00
Chris Lattner
3420137e63
Refactor code, initial implementation of -insert-block-profiling pass
...
llvm-svn: 9593
2003-10-29 21:24:22 +00:00
Chris Lattner
183fa7ceb3
Pass in argc & argv
...
llvm-svn: 9563
2003-10-28 22:42:24 +00:00
Chris Lattner
c8ba0672ac
Initial checkin of profiling instrumentation pass. So far, despite the
...
file name, we only support function profiling. This will be fixed in the
near future.
llvm-svn: 9547
2003-10-28 18:59:04 +00:00
Chris Lattner
233989316c
Eliminate using declarations
...
llvm-svn: 9543
2003-10-27 21:44:09 +00:00
John Criswell
29265fe981
Added LLVM copyright header.
...
llvm-svn: 9321
2003-10-21 15:17:13 +00:00
John Criswell
4436c49787
Added LLVM copyright notice to Makefiles.
...
llvm-svn: 9312
2003-10-20 22:26:57 +00:00
John Criswell
482202a601
Added LLVM project notice to the top of every C++ source file.
...
Header files will be on the way.
llvm-svn: 9298
2003-10-20 19:43:21 +00:00
Chris Lattner
b94550e537
Change the Opcode enum for PHI nodes from "Instruction::PHINode" to "Instruction::PHI" to be more consistent with the other instructions.
...
llvm-svn: 9269
2003-10-19 21:34:28 +00:00
Chris Lattner
44d2c3514a
Regularize header file comments
...
llvm-svn: 9071
2003-10-13 03:32:08 +00:00
Chris Lattner
7cce14bfbf
Regularize header file comment, eliminate using's
...
llvm-svn: 9069
2003-10-13 03:30:47 +00:00
Brian Gaeke
b8a4ed6543
Include <cstdio> instead of <stdio.h>.
...
llvm-svn: 9032
2003-10-10 18:46:52 +00:00
Brian Gaeke
cc31fddf13
Don't include Config/stdio.h or <stdio.h>.
...
llvm-svn: 9031
2003-10-10 18:46:29 +00:00
Misha Brukman
8b2bd4ed47
Fix spelling.
...
llvm-svn: 9027
2003-10-10 17:57:28 +00:00
Misha Brukman
b3acb4027e
Fixing the spelling of this filename.
...
llvm-svn: 9009
2003-10-10 16:57:31 +00:00
Chris Lattner
e317856e0e
Use global *_iterator
...
llvm-svn: 8703
2003-09-24 22:07:33 +00:00
Chris Lattner
a940095ae2
Do not use BasicBlock::*_iterator, just use *_iterator itself.
...
Isn't updating copy and pasted code a joy
llvm-svn: 8702
2003-09-24 22:06:25 +00:00
Chris Lattner
5dac64f629
Rename Function::getEntryNode -> getEntryBlock
...
llvm-svn: 8625
2003-09-20 14:39:18 +00:00
Chris Lattner
10a032abf1
Update for new UnifyFunction... API
...
Remove using decl
llvm-svn: 8458
2003-09-10 20:35:33 +00:00
Chris Lattner
3b30e93e27
Remove #include
...
llvm-svn: 8457
2003-09-10 20:35:21 +00:00
Brian Gaeke
6181cac0dc
Correct comments
...
Don't include InstLoops.h
Don't export factory functions for these passes
llvm-svn: 8373
2003-09-05 19:43:19 +00:00
Chris Lattner
25bc3f86de
Use the new interface, simplifies code
...
NOTE that these two files are _BUGGY_ and need to be fixed, just not by me :)
llvm-svn: 8241
2003-08-31 00:21:59 +00:00
Chris Lattner
ea27751e4b
Use the new interface, simplifies code
...
Delete a bunch of commented out code
llvm-svn: 8240
2003-08-31 00:21:05 +00:00
Chris Lattner
8e6ac1bf10
Use the new interface, simplifies code
...
llvm-svn: 8239
2003-08-31 00:20:36 +00:00
Brian Gaeke
709a16a0bc
Give std::map<BasicBlock *, BasicBlock *> the short name BBMap, because
...
it's used 7 different times.
Rename `getBackEdges' to `findAndInstrumentBackEdges', for clarity.
Remove some excess whitespace and commented-out code.
Use shorter forms of CallInst ctors.
Do not make `reopt_threshold' visible to the LLVM program, and do not
pass it to the call to `reoptimizerInitialize'. Don't pass the
GlobalVariable representing it to any of our helper methods.
`reopt_threshold' is an internal parameter of the reoptimizer, which
InstLoops does not need to know about.
llvm-svn: 7794
2003-08-12 22:00:24 +00:00
Chris Lattner
8abcd56c74
DEBUG got moved to Support/Debug.h
...
llvm-svn: 7492
2003-08-01 22:15:03 +00:00
Anand Shukla
1db75a0f7c
Added check for inlinable function
...
llvm-svn: 7206
2003-07-18 20:55:26 +00:00
Anand Shukla
89233e1c9a
A pass to combine multiple backedges that go to same target
...
llvm-svn: 7201
2003-07-18 16:08:32 +00:00
Vikram S. Adve
ac83df769b
Trace loads and stores as they happen (stores were being
...
remembered in valuesStoredInFunction, but never traced at function return,
and that's too late to be finding the error anyway).
Stores trace both the value and the address being stored to,
but after some experience I think only values should be traced.
The pointer hash table just fills up far too quickly if every
store address were traced.
llvm-svn: 7169
2003-07-11 21:57:43 +00:00
Anand Shukla
b3d794a2c9
Added functionality to instrmentation pass
...
llvm-svn: 7161
2003-07-10 21:55:57 +00:00
John Criswell
3ef61afb76
Merged in autoconf branch. This provides configuration via the autoconf
...
system.
llvm-svn: 7014
2003-06-30 21:59:07 +00:00
Anand Shukla
2fd8edd659
Fixed a bug so initialization code is always inserted in main
...
llvm-svn: 6622
2003-06-05 06:02:46 +00:00
Chris Lattner
3cc301834e
Use a constant expr GEP instead of an actual instruction
...
llvm-svn: 6620
2003-06-05 04:48:18 +00:00
Chris Lattner
a485efa141
Make this work with counter > 127
...
llvm-svn: 6613
2003-06-04 20:08:47 +00:00
Anand Shukla
03a2134253
Added the #(internal functions) to output
...
llvm-svn: 6502
2003-06-01 02:40:49 +00:00
Chris Lattner
8d0a71aff8
Remove using declarations
...
llvm-svn: 6306
2003-05-22 22:00:07 +00:00
Chris Lattner
889f620841
Remove unnecesary &*'s
...
llvm-svn: 5872
2003-04-23 16:37:45 +00:00
Chris Lattner
379a8d2d1c
Add new linkage types to support a real frontend
...
llvm-svn: 5786
2003-04-16 20:28:45 +00:00
Chris Lattner
01587d4ad1
Make help message more clear
...
llvm-svn: 5775
2003-04-13 03:50:14 +00:00
Anand Shukla
f8c09ee341
Changes to runtime framework
...
llvm-svn: 5572
2003-02-14 20:41:53 +00:00
Chris Lattner
eaec4be9ea
Revert Anand's patch which broke the build
...
llvm-svn: 5525
2003-02-10 15:55:50 +00:00
Anand Shukla
893dfda486
*** empty log message ***
...
llvm-svn: 5522
2003-02-09 21:15:36 +00:00
Chris Lattner
57fd307f6d
Rename include/llvm/Transforms/Instrumentation/TraceFunctions.h to Instrumentation.h
...
llvm-svn: 5281
2003-01-14 22:39:29 +00:00
Chris Lattner
e885b1f596
Fix typeo
...
llvm-svn: 5278
2003-01-14 22:34:36 +00:00
Chris Lattner
580bcaca7d
Remove unused header and function
...
llvm-svn: 5277
2003-01-14 22:34:13 +00:00