| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
| |
under cmake).
Add libprofile_rt.a so that we can tell clang to link against it in --coverage
mode. Also turn it on by default in cmake builds.
Oscar, this touches a change you made for EXCLUDE_FROM_ALL support -- I think
I've done the right thing, but please let me know (or fix and commit) if not!
llvm-svn: 130470
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
between two reads (threading).
Fix an off-by-one in the indirect counter table that I meant to revert after an
earlier experiment. Whoops!
Implement GCOV_PREFIX. Doesn't handle GCOV_PREFIX_STRIP yet.
Fix an off-by-one in string emission. Extra whoops!
Tolerate DISubprograms that have null Function*'s attached to them. I don't yet
understand what this means, but it happens when you have a global static with
a non-trivial constructor/destructor.
Fix a crash on switch statements with a single successor (default-only).
llvm-svn: 130443
|
|
|
|
|
|
| |
C89 doesn't have an inline keyword.
llvm-svn: 130279
|
|
|
|
| |
llvm-svn: 130199
|
|
|
|
| |
llvm-svn: 130191
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add support for switch and indirectbr edges. This works by densely numbering
all blocks which have such terminators, and then separately numbering the
possible successors. The predecessors write down a number, the successor knows
its own number (as a ConstantInt) and sends that and the pointer to the number
the predecessor wrote down to the runtime, who looks up the counter in a
per-function table.
Coverage data should now be functional, but I haven't tested it on anything
other than my 2-file synthetic test program for coverage.
llvm-svn: 130186
|
|
|
|
| |
llvm-svn: 129638
|
|
|
|
| |
llvm-svn: 129637
|
|
|
|
|
|
|
| |
does. Also mostly implement it. Still a work-in-progress, but generates legal
output on crafted test cases.
llvm-svn: 129630
|
|
|
|
|
|
| |
Luis Felipe Strano Moraes!
llvm-svn: 129558
|
|
|
|
| |
llvm-svn: 129467
|
|
|
|
| |
llvm-svn: 129423
|
|
|
|
|
|
| |
specifier.
llvm-svn: 129384
|
|
|
|
| |
llvm-svn: 129380
|
|
|
|
|
|
|
|
|
|
| |
Use debug info in the IR to find the directory/file:line:col. Each time that location changes, bump a counter.
Unlike the existing profiling system, we don't try to look at argv[], and thusly don't require main() to be present in the IR. This matches GCC's technique where you specify the profiling flag when producing each .o file.
The runtime library is minimal, currently just calling printf at program shutdown time. The API is designed to make it possible to emit GCOV data later on.
llvm-svn: 129340
|
|
|
|
|
|
|
|
|
|
| |
Modified patch by Adam Preuss.
This builds on the existing framework for block tracing, edge profiling and optimal edge profiling.
See -help-hidden for new flags.
For documentation, see the technical report "Implementation of Path Profiling..." in llvm.org/pubs.
llvm-svn: 124515
|
|
|
|
|
|
|
| |
Makefile.rules assumes that all EXPORTED_SYMBOL_FILEs have the .exports
extension.
llvm-svn: 112964
|
|
|
|
| |
llvm-svn: 101459
|
|
|
|
|
|
| |
to expect them this way, to fix srcdir!=objdir builds.
llvm-svn: 101414
|
|
|
|
|
|
| |
system.
llvm-svn: 101404
|
|
|
|
| |
llvm-svn: 101387
|
|
|
|
|
|
| |
variable TARGET_HAS_DYNAMIC_LIBS
llvm-svn: 100896
|
|
|
|
| |
llvm-svn: 100895
|
|
|
|
|
|
| |
predicate.
llvm-svn: 97882
|
|
|
|
| |
llvm-svn: 97772
|
|
|
|
| |
llvm-svn: 96936
|
|
|
|
|
|
| |
If there is interest, it can be resurrected from SVN. PR4912.
llvm-svn: 92422
|
|
|
|
|
|
| |
This adds the instrumentation and runtime part of OptimalEdgeProfiling.
llvm-svn: 80712
|
|
|
|
|
|
| |
See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090824/085828.html
llvm-svn: 80372
|
|
|
|
| |
llvm-svn: 80331
|
|
|
|
| |
llvm-svn: 80330
|
|
|
|
| |
llvm-svn: 80303
|
|
|
|
| |
llvm-svn: 79944
|
|
|
|
| |
llvm-svn: 79514
|
|
|
|
|
|
| |
that is totally bogus.
llvm-svn: 79512
|
|
|
|
| |
llvm-svn: 65801
|
|
|
|
| |
llvm-svn: 46302
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ShadowStackCollector, which additionally has reduced overhead with
no sacrifice in portability.
Considering a function @fun with 8 loop-local roots,
ShadowStackCollector introduces the following overhead
(x86):
; shadowstack prologue
movl L_llvm_gc_root_chain$non_lazy_ptr, %eax
movl (%eax), %ecx
movl $___gc_fun, 20(%esp)
movl $0, 24(%esp)
movl $0, 28(%esp)
movl $0, 32(%esp)
movl $0, 36(%esp)
movl $0, 40(%esp)
movl $0, 44(%esp)
movl $0, 48(%esp)
movl $0, 52(%esp)
movl %ecx, 16(%esp)
leal 16(%esp), %ecx
movl %ecx, (%eax)
; shadowstack loop overhead
(none)
; shadowstack epilogue
movl 48(%esp), %edx
movl %edx, (%ecx)
; shadowstack metadata
.align 3
___gc_fun: # __gc_fun
.long 8
.space 4
In comparison to LowerGC:
; lowergc prologue
movl L_llvm_gc_root_chain$non_lazy_ptr, %eax
movl (%eax), %ecx
movl %ecx, 48(%esp)
movl $8, 52(%esp)
movl $0, 60(%esp)
movl $0, 56(%esp)
movl $0, 68(%esp)
movl $0, 64(%esp)
movl $0, 76(%esp)
movl $0, 72(%esp)
movl $0, 84(%esp)
movl $0, 80(%esp)
movl $0, 92(%esp)
movl $0, 88(%esp)
movl $0, 100(%esp)
movl $0, 96(%esp)
movl $0, 108(%esp)
movl $0, 104(%esp)
movl $0, 116(%esp)
movl $0, 112(%esp)
; lowergc loop overhead
leal 44(%esp), %eax
movl %eax, 56(%esp)
leal 40(%esp), %eax
movl %eax, 64(%esp)
leal 36(%esp), %eax
movl %eax, 72(%esp)
leal 32(%esp), %eax
movl %eax, 80(%esp)
leal 28(%esp), %eax
movl %eax, 88(%esp)
leal 24(%esp), %eax
movl %eax, 96(%esp)
leal 20(%esp), %eax
movl %eax, 104(%esp)
leal 16(%esp), %eax
movl %eax, 112(%esp)
; lowergc epilogue
movl 48(%esp), %edx
movl %edx, (%ecx)
; lowergc metadata
(none)
llvm-svn: 45670
|
|
|
|
| |
llvm-svn: 45425
|
|
|
|
| |
llvm-svn: 45416
|
|
|
|
|
|
|
| |
capabilities. This is a major rewrite and is easier to read en toto
rather than patchwise.
llvm-svn: 42414
|
|
|
|
| |
llvm-svn: 41851
|
|
|
|
| |
llvm-svn: 41850
|
|
|
|
|
|
| |
number of licenses used in LLVM.
llvm-svn: 41257
|
|
|
|
| |
llvm-svn: 34529
|
|
|
|
| |
llvm-svn: 32999
|
|
|
|
|
|
|
| |
premature, these libraries will be going away for the 2.0 release. Other
arrangements for profiling, gc, etc. should be made in the next few months.
llvm-svn: 31807
|
|
|
|
|
|
| |
be dropped. This patch pertains to removing the runtime directory from LLVM.
llvm-svn: 31793
|
|
|
|
| |
llvm-svn: 31404
|
|
|
|
|
|
|
|
|
|
| |
Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
fall out by removing unused variables. Remaining warnings have to do with
unused functions (I didn't want to delete code without review) and unused
variables in generated code. Maintainers should clean up the remaining
issues when they see them. All changes pass DejaGnu tests and Olden.
llvm-svn: 31380
|