Skip to content
  1. Jan 16, 2013
  2. Jan 14, 2013
  3. Jan 12, 2013
  4. Jan 11, 2013
  5. Jan 10, 2013
  6. Jan 07, 2013
  7. Jan 05, 2013
    • Chandler Carruth's avatar
      Rename the unittest from ArrayRecylerTest.cpp to ArrayRecyclerTest.cpp. · 0dba59ae
      Chandler Carruth authored
      Fixes the CMake build. It took me cutting and pasting this before
      I managed to see the missing character. =]
      
      llvm-svn: 171589
      0dba59ae
    • Jakob Stoklund Olesen's avatar
      Add an ArrayRecycler class. · 17a7d22d
      Jakob Stoklund Olesen authored
      This is similar to the existing Recycler allocator, but instead of
      recycling individual objects from a BumpPtrAllocator, arrays of
      different sizes can be allocated.
      
      llvm-svn: 171581
      17a7d22d
    • Chandler Carruth's avatar
      Add time getters to the process interface for requesting the elapsed · ef7f968e
      Chandler Carruth authored
      wall time, user time, and system time since a process started.
      
      For walltime, we currently use TimeValue's interface and a global
      initializer to compute a close approximation of total process runtime.
      
      For user time, this adds support for an somewhat more precise timing
      mechanism -- clock_gettime with the CLOCK_PROCESS_CPUTIME_ID clock
      selected.
      
      For system time, we have to do a full getrusage call to extract the
      system time from the OS. This is expensive but unavoidable.
      
      In passing, clean up the implementation of the old APIs and fix some
      latent bugs in the Windows code. This might have manifested on Windows
      ARM systems or other systems with strange 64-bit integer behavior.
      
      The old API for this both user time and system time simultaneously from
      a single getrusage call. While this results in fewer system calls, it
      also results in a lower precision user time and if only user time is
      desired, it introduces a higher overhead. It may be worthwhile to switch
      some of the pass timers to not track system time and directly track user
      and wall time. The old API also tracked walltime in a confusing way --
      it just set it to the current walltime rather than providing any measure
      of wall time since the process started the way buth user and system time
      are tracked. The new API is more consistent here.
      
      The plan is to eventually implement these methods for a *child* process
      by using the wait3(2) system call to populate an rusage struct
      representing the whole subprocess execution. That way, after waiting on
      a child process its stats will become accurate and cheap to query.
      
      llvm-svn: 171551
      ef7f968e
  8. Jan 04, 2013
    • Jakob Stoklund Olesen's avatar
      Add an iplist::clearAndLeakNodesUnsafely() function. · 4ccabc1d
      Jakob Stoklund Olesen authored
      The iplist::clear() function can be quite expensive because it traverses
      the entire list, calling deleteNode() and removeNodeFromList() on each
      element. If node destruction and deallocation can be handled some other
      way, clearAndLeakNodesUnsafely() can be used to jettison all nodes
      without bringing them into cache.
      
      The function name is meant to be ominous.
      
      llvm-svn: 171540
      4ccabc1d
    • Nick Kledzik's avatar
      Fix how YAML I/O detects flow sequences. · 11964f2a
      Nick Kledzik authored
      Update test case to verify flow sequence is
      written as a flow sequence.
      
      llvm-svn: 171514
      11964f2a
  9. Jan 02, 2013
  10. Jan 01, 2013
  11. Dec 31, 2012
    • Michael J. Spencer's avatar
      [AlignOf] Add AlignedCharArray and refactor AlignedCharArrayUnion. · da3e31a4
      Michael J. Spencer authored
      This adds AlignedCharArray<Alignment, Size>. A templated struct that contains
      a member named buffer of type char[Size] that is aligned to Alignment.
      
      llvm-svn: 171319
      da3e31a4
    • Chandler Carruth's avatar
      Begin sketching out the process interface. · 97683aa2
      Chandler Carruth authored
      The coding style used here is not LLVM's style because this is modeled
      after a Boost interface and thus done in the style of a candidate C++
      standard library interface. I'll probably end up proposing it as
      a standard C++ library if it proves to be reasonably portable and
      useful.
      
      This is just the most basic parts of the interface -- getting the
      process ID out of it. However, it helps sketch out some of the boiler
      plate such as the base class, derived class, shared code, and static
      factory function. It also introduces a unittest so that I can
      incrementally ensure this stuff works.
      
      However, I've not even compiled this code for Windows yet. I'll try to
      fix any Windows fallout from the bots, and if I can't fix it I'll revert
      and get someone on Windows to help out. There isn't a lot more that is
      mandatory, so soon I'll switch to just stubbing out the Windows side and
      get Michael Spencer to help with implementation as he can test it
      directly.
      
      llvm-svn: 171289
      97683aa2
  12. Dec 21, 2012
  13. Dec 18, 2012
    • Jakob Stoklund Olesen's avatar
      Add an assertion for a likely ilist::splice() contract violation. · b8d29bf2
      Jakob Stoklund Olesen authored
      The single-element ilist::splice() function supports a noop move:
      
        List.splice(I, List, I);
      
      The corresponding std::list function doesn't allow that, so add a unit
      test to document that behavior.
      
      This also means that
      
        List.splice(I, List, F);
      
      is somewhat surprisingly not equivalent to
      
        List.splice(I, List, F, next(F));
      
      This patch adds an assertion to catch the illegal case I == F above.
      Alternatively, we could make I == F a legal noop, but that would make
      ilist differ even more from std::list.
      
      llvm-svn: 170443
      b8d29bf2
  14. Dec 17, 2012
  15. Dec 12, 2012
  16. Dec 09, 2012
  17. Dec 08, 2012
  18. Dec 05, 2012
  19. Dec 04, 2012
  20. Dec 03, 2012
  21. Nov 30, 2012
    • Chandler Carruth's avatar
      Switch LLVM_USE_RVALUE_REFERENCES to LLVM_HAS_RVALUE_REFERENCES. · f12e3a67
      Chandler Carruth authored
      Rationale:
      1) This was the name in the comment block. ;]
      2) It matches Clang's __has_feature naming convention.
      3) It matches other compiler-feature-test conventions.
      
      Sorry for the noise. =]
      
      I've also switch the comment block to use a \brief tag and not duplicate
      the name.
      
      llvm-svn: 168996
      f12e3a67
Loading