Skip to content
  1. Apr 29, 2011
    • Francois Pichet's avatar
      Unbreak the MSVC build: · dbad1d15
      Francois Pichet authored
        - 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
      dbad1d15
    • Nick Lewycky's avatar
      Rename profile_rt.so to libprofile_rt.so under configure+make (it already was · 61aed87a
      Nick Lewycky authored
      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
      61aed87a
  2. Apr 28, 2011
    • Nick Lewycky's avatar
      Only read *predecessor once so as to fix a theoretical issue where it changes · 6aa79492
      Nick Lewycky authored
      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
      6aa79492
  3. Apr 27, 2011
  4. Apr 26, 2011
    • Oscar Fuentes's avatar
      Honor LLVM_BUILD_RUNTIME. · 638aaecc
      Oscar Fuentes authored
      llvm-svn: 130199
      638aaecc
    • Nick Lewycky's avatar
      Add cmakefiles to build profile_rt.so! · 68d22189
      Nick Lewycky authored
      llvm-svn: 130191
      68d22189
    • Nick Lewycky's avatar
      Rename everything to follow LLVM style ... I think. · c58d293a
      Nick Lewycky authored
      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
      c58d293a
  5. Apr 16, 2011
  6. Apr 15, 2011
  7. Apr 13, 2011
  8. Apr 12, 2011
  9. Jan 29, 2011
    • Andrew Trick's avatar
      Implementation of path profiling. · 24f5ff0f
      Andrew Trick authored
      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
      24f5ff0f
  10. Sep 03, 2010
  11. Apr 16, 2010
  12. Apr 15, 2010
  13. Apr 09, 2010
  14. Mar 06, 2010
  15. Mar 05, 2010
  16. Feb 23, 2010
  17. Jan 02, 2010
  18. Sep 01, 2009
  19. Aug 28, 2009
  20. Aug 24, 2009
  21. Aug 20, 2009
  22. Mar 02, 2009
  23. Jan 24, 2008
  24. Jan 07, 2008
    • Gordon Henriksen's avatar
      With this patch, the LowerGC transformation becomes the · 6047b6e1
      Gordon Henriksen authored
      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
      6047b6e1
  25. Dec 29, 2007
Loading