Francois Pichet
3d8581cca9
Fix MSVC warning regarding mkdir function usage.
...
llvm-svn: 132109
2011-05-26 04:55:20 +00:00
Francois Pichet
b8f50b86bc
Fix 3 MSVC warnings:
...
'void (__cdecl *)()' differs in parameter lists from 'void (__cdecl *)(void)'
atexit really expects a "void f(void)" function.
llvm-svn: 132061
2011-05-25 16:32:33 +00:00
Nick Lewycky
eef7bead41
The computation of string length is not that complicated. Fix it, again. :)
...
llvm-svn: 130967
2011-05-05 23:52:18 +00:00
Nick Lewycky
c537bf5a97
Update the gcov version used slightly, to make it stop causing modern gcov's to
...
crash.
llvm-svn: 130911
2011-05-05 02:46:38 +00:00
Nick Lewycky
e3e47cc4d8
Create the parent directories to place the .gcda files in if they don't exist.
...
That's kinda weird because the .gcno files are supposed to already be there,
but libgcov does this and somehow Google has managed to depend on it.
llvm-svn: 130879
2011-05-04 22:34:29 +00:00
Nick Lewycky
75424d52d7
Fix crash when not setting GCOV_PREFIX.
...
llvm-svn: 130834
2011-05-04 03:58:45 +00:00
NAKAMURA Takumi
f485b6e3a8
runtime/libprofile/PathProfiling.c: Don't use // comment in C source.
...
llvm-svn: 130589
2011-04-30 03:53:56 +00:00
Daniel Dunbar
64d3760882
win32: Include DataTypes.h instead of stdint.h to try and fix a Win32 build
...
issue.
llvm-svn: 130530
2011-04-29 18:58:57 +00:00
Daniel Dunbar
33083542c4
Cleanup some DOS newlines.
...
llvm-svn: 130529
2011-04-29 18:58:55 +00:00
Francois Pichet
4c0e0098a5
Unbreak the MSVC build:
...
- unistd.h doesn't exist with MSVC
- inline must be __inline in Microsoft C
- atexit cannot take a function declared as void f(), must be void f(void).
llvm-svn: 130490
2011-04-29 08:56:07 +00:00
Nick Lewycky
ea1dbad689
Rename profile_rt.so to libprofile_rt.so under configure+make (it already was
...
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
2011-04-29 02:12:06 +00:00
Nick Lewycky
40c59f95d7
Only read *predecessor once so as to fix a theoretical issue where it changes
...
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
2011-04-28 21:35:49 +00:00
Nick Lewycky
0a9ef78096
Use static inline to do the right thing when built in C99 mode. Of course,
...
C89 doesn't have an inline keyword.
llvm-svn: 130279
2011-04-27 03:22:17 +00:00
Oscar Fuentes
246a11f21c
Honor LLVM_BUILD_RUNTIME.
...
llvm-svn: 130199
2011-04-26 14:55:27 +00:00
Nick Lewycky
6a72236e5f
Add cmakefiles to build profile_rt.so!
...
llvm-svn: 130191
2011-04-26 05:48:41 +00:00
Nick Lewycky
d4d9c257e0
Rename everything to follow LLVM style ... I think.
...
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
2011-04-26 03:54:16 +00:00
Benjamin Kramer
c7d15fb261
Write out uint64_t as i{0..32},i{33..64} instead of i{0..32},0.
...
llvm-svn: 129638
2011-04-16 10:25:32 +00:00
Nick Lewycky
e704042077
Don't use C++ comments in C code.
...
llvm-svn: 129637
2011-04-16 04:25:36 +00:00
Nick Lewycky
9aeaafc27a
Rename LineProfiling to GCOVProfiling to more accurately represent what it
...
does. Also mostly implement it. Still a work-in-progress, but generates legal
output on crafted test cases.
llvm-svn: 129630
2011-04-16 01:20:23 +00:00
Chris Lattner
0304b82f80
Fix a ton of comment typos found by codespell. Patch by
...
Luis Felipe Strano Moraes!
llvm-svn: 129558
2011-04-15 05:18:47 +00:00
Benjamin Kramer
41b2c100c4
Fix format string warning.
...
llvm-svn: 129467
2011-04-13 20:41:43 +00:00
Nick Lewycky
0ec72ba684
Use %ull here.
...
llvm-svn: 129423
2011-04-13 01:05:45 +00:00
Nick Lewycky
b461b6de06
Print our uint64_t with the more portable (C99 and C++0x) %PRIu64 format
...
specifier.
llvm-svn: 129384
2011-04-12 20:06:50 +00:00
Nick Lewycky
ec33cecdf0
The counters are unsigned.
...
llvm-svn: 129380
2011-04-12 19:35:45 +00:00
Nick Lewycky
cbe911f7d8
Add support for line profiling. Very work-in-progress.
...
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
2011-04-12 01:06:09 +00:00
Andrew Trick
72f17d97f3
Implementation of path profiling.
...
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
2011-01-29 01:09:53 +00:00
Mikhail Glushenkov
70c650839b
Rename 'libprofile/exported_symbols.lst' to 'libprofile/libprofile.exports'.
...
Makefile.rules assumes that all EXPORTED_SYMBOL_FILEs have the .exports
extension.
llvm-svn: 112964
2010-09-03 15:42:45 +00:00
Dan Gohman
c2f8d14811
Delete a blank line.
...
llvm-svn: 101459
2010-04-16 13:32:55 +00:00
Dan Gohman
55f814fdc4
Make the export files absolute paths, and change Makefile.rules
...
to expect them this way, to fix srcdir!=objdir builds.
llvm-svn: 101414
2010-04-15 23:08:00 +00:00
Daniel Dunbar
411f700614
Don't use absolute path for EXPORTED_SYMBOL_FILE, this breaks under the new
...
system.
llvm-svn: 101404
2010-04-15 21:57:43 +00:00
Anton Korobeynikov
a1cca8a579
Revert r100896 and around - this breaks the only mingw32 buildbot we have.
...
llvm-svn: 101387
2010-04-15 19:51:42 +00:00
Chris Lattner
7ecde540fb
suck the propagating "has dynamic libs" check into a single makefile
...
variable TARGET_HAS_DYNAMIC_LIBS
llvm-svn: 100896
2010-04-09 20:51:47 +00:00
Chris Lattner
9d77e5ba47
add minix support, patch by Kees van Reeuwijk! PR6797
...
llvm-svn: 100895
2010-04-09 20:45:04 +00:00
Chris Lattner
eb142908d7
disable this for mingw as well, we really need a 'has no dynamic linking' predicate.
...
llvm-svn: 97882
2010-03-06 18:54:37 +00:00
Chris Lattner
c5bf78ce52
disable libprofile on cygwin, patch by Aaron Gray.
...
llvm-svn: 97772
2010-03-05 01:00:34 +00:00
Daniel Dunbar
31196b6778
Switch .bc/.ll Makefile rules to use LLVM{CC,CXX} instead of LLVMG{CC,XX}
...
llvm-svn: 96936
2010-02-23 10:28:06 +00:00
Chris Lattner
07a1a284d3
remove the random sampling framework, which is not maintained anymore.
...
If there is interest, it can be resurrected from SVN. PR4912.
llvm-svn: 92422
2010-01-02 20:07:03 +00:00
Andreas Neustifter
683bc5306c
OptimalEdgeProfiling: Creation of profiles.
...
This adds the instrumentation and runtime part of OptimalEdgeProfiling.
llvm-svn: 80712
2009-09-01 19:03:44 +00:00
Andreas Neustifter
398f646dce
Read Makefile.config before using LLVMGCC.
...
See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090824/085828.html
llvm-svn: 80372
2009-08-28 16:13:45 +00:00
Daniel Dunbar
2c92414183
Another NO_RUNTIME_LIBRARIES tweak...
...
llvm-svn: 80331
2009-08-28 03:06:28 +00:00
Daniel Dunbar
8d3f3f69f2
Tweak NO_RUNTIME_LIBS.
...
llvm-svn: 80330
2009-08-28 02:20:39 +00:00
Daniel Dunbar
b06129b062
Don't build runtime libraries in an Apple style build.
...
llvm-svn: 80303
2009-08-27 23:43:28 +00:00
Andreas Neustifter
d9b49e77dd
Add llvm_start_edge_profiling to exported symbols for libprofile_rt.
...
llvm-svn: 79944
2009-08-24 21:41:37 +00:00
Daniel Dunbar
2e82bcd546
Don't try to build .bc version of libprofile if LLVMGCC isn't available.
...
llvm-svn: 79514
2009-08-20 05:12:55 +00:00
Daniel Dunbar
4889837fc6
Remove cruft for installing runtime/ libraries directly into the LLVMGCCDIR;
...
that is totally bogus.
llvm-svn: 79512
2009-08-20 05:02:41 +00:00
Gordon Henriksen
ba66b036b5
Drop toy GC runtime.
...
llvm-svn: 65801
2009-03-02 03:46:48 +00:00
Gordon Henriksen
639468e763
Fixing the stack walker.
...
llvm-svn: 46302
2008-01-24 05:16:36 +00:00
Gordon Henriksen
db4f51e1b9
With this patch, the LowerGC transformation becomes the
...
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
2008-01-07 01:30:53 +00:00
Chris Lattner
7a9b0bf0eb
remove attribution from a variety of miscellaneous files.
...
llvm-svn: 45425
2007-12-29 22:59:10 +00:00
Chris Lattner
6aece93d5c
remove attributions from the rest of the llvm makefiles.
...
llvm-svn: 45416
2007-12-29 20:11:13 +00:00