Commit Graph

263 Commits

Author SHA1 Message Date
Benjamin Kramer c186dcf2c5 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 303b5e21fc Don't use C++ comments in C code.
llvm-svn: 129637
2011-04-16 04:25:36 +00:00
Nick Lewycky 966edd068f 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 0ab5e2cded 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 aabc142fce Fix format string warning.
llvm-svn: 129467
2011-04-13 20:41:43 +00:00
Nick Lewycky a8150b1c90 Use %ull here.
llvm-svn: 129423
2011-04-13 01:05:45 +00:00
Nick Lewycky 2b473f8c85 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 3c974a6bde The counters are unsigned.
llvm-svn: 129380
2011-04-12 19:35:45 +00:00
Nick Lewycky 9d60e373cf 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 24f5ff0f23 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 d2b5336ae7 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 aa4d9ea465 Delete a blank line.
llvm-svn: 101459
2010-04-16 13:32:55 +00:00
Dan Gohman ff9ecb2824 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 73fa324609 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 839cdaa70a 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 74e2ef68b9 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 c86cdc7d47 add minix support, patch by Kees van Reeuwijk! PR6797
llvm-svn: 100895
2010-04-09 20:45:04 +00:00
Chris Lattner 1e93b96117 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 6dbf5cc64c disable libprofile on cygwin, patch by Aaron Gray.
llvm-svn: 97772
2010-03-05 01:00:34 +00:00
Daniel Dunbar e615b5fe4d 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 351e22aa36 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 759094e323 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 7026421d61 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 2ece038e6e Another NO_RUNTIME_LIBRARIES tweak...
llvm-svn: 80331
2009-08-28 03:06:28 +00:00
Daniel Dunbar e45cdcdca2 Tweak NO_RUNTIME_LIBS.
llvm-svn: 80330
2009-08-28 02:20:39 +00:00
Daniel Dunbar e36c50f163 Don't build runtime libraries in an Apple style build.
llvm-svn: 80303
2009-08-27 23:43:28 +00:00
Andreas Neustifter d749cbd9e2 Add llvm_start_edge_profiling to exported symbols for libprofile_rt.
llvm-svn: 79944
2009-08-24 21:41:37 +00:00
Daniel Dunbar 4d28366342 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 c2fdebe8af 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 3de1a09c86 Drop toy GC runtime.
llvm-svn: 65801
2009-03-02 03:46:48 +00:00
Gordon Henriksen 520981b62f Fixing the stack walker.
llvm-svn: 46302
2008-01-24 05:16:36 +00:00
Gordon Henriksen 6047b6e140 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 6787a45a65 remove attribution from a variety of miscellaneous files.
llvm-svn: 45425
2007-12-29 22:59:10 +00:00
Chris Lattner 11cc8b3c14 remove attributions from the rest of the llvm makefiles.
llvm-svn: 45416
2007-12-29 20:11:13 +00:00
Gordon Henriksen 0076a6727e GarbageCollection.html is expanded to encompass the coming
capabilities. This is a major rewrite and is easier to read en toto
rather than patchwise.

llvm-svn: 42414
2007-09-27 19:31:36 +00:00
Chris Lattner 69c1b10993 Reenable libgc and libprofile is explicitly requested.
llvm-svn: 41851
2007-09-11 17:12:32 +00:00
Chris Lattner e09791c399 remove an obsolete library.
llvm-svn: 41850
2007-09-11 17:10:52 +00:00
Anton Korobeynikov 3fc4a9f78a Dror GCCLibraries: they are obsolete since 2.0 release. This also reduces number of licenses used in LLVM.
llvm-svn: 41257
2007-08-21 22:40:44 +00:00
Chris Lattner d3c36c9641 crtend is only for llvm-gcc3, remove it.
llvm-svn: 34529
2007-02-23 19:34:09 +00:00
Chris Lattner 47d012e1c0 the old trace values pass has been removed, remove its runtime library.
llvm-svn: 32999
2007-01-07 18:13:48 +00:00
Reid Spencer 4b8067f37b Undo removal of the runtime libraries. While this may have been a bit
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
2006-11-17 03:32:33 +00:00
Reid Spencer 3f97d03f86 In LLVM 2.0 we won't use the runtime libraries as llvm-gcc3 support will
be dropped. This patch pertains to removing the runtime directory from LLVM.

llvm-svn: 31793
2006-11-16 23:17:27 +00:00
Reid Spencer 3056ebeb22 Remove unused variable.
llvm-svn: 31404
2006-11-03 01:58:30 +00:00
Reid Spencer de46e48420 For PR786:
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
2006-11-02 20:25:50 +00:00
John Criswell e6330aeb36 Describe and date modifications we made per LGPL requirements.
llvm-svn: 29569
2006-08-08 14:47:54 +00:00
John Criswell 05de6a9297 Make information more complete.
llvm-svn: 29568
2006-08-08 14:47:33 +00:00
John Criswell 6878ce38aa Reverted previous commit. Thanks, Chris.
llvm-svn: 29388
2006-07-28 18:30:52 +00:00
John Criswell 4e31ae8611 Added in the LGPL text and copyright information. This needs to be
included in the distribution.
Also added the glibc LICENSES file, which should be included as well.

llvm-svn: 29386
2006-07-28 18:16:00 +00:00
Reid Spencer a62f097c96 For PR786:
Turn -pedantic and -Wno-long-long compile flags on by default. In a few
places, avoid the warnings by removing these options in the local makefile.
One notable exception: lib/Target/CBackend/Writer.cpp. These warnings are
left on as a reminder to developers to clean them up.

llvm-svn: 28614
2006-06-01 01:55:21 +00:00
Reid Spencer 54d1f85b19 Put an innocuous statement in this file to quelch warnings about compiling
an empty file.

llvm-svn: 28612
2006-06-01 01:49:08 +00:00