llvm-project/libcxx
Eric Fiselier b0945e1bd2 Improve codegen for deque.
This patch rewrites a few loops in deque and split_buffer to better
optimize the codegen. For constructors like
`deque<unsigned char> d(500000, 0);` this patch results in a 2x speedup.

The patch improves the codegen  in roughly three ways:

1. Changes do { ... } while (...) loops into more typical for loops.
  The optimizer can reason about normal looking loops better.

2. Split the iteration over a range into (A) iteration over the blocks,
then (B) iteration within the block. This nested structure helps LLVM
lower the inner loop to `memset`.

3. Do fewer things each iteration. Some of these loops were incrementing
  or changing 4-5 variables every loop (in addition to the
  construction). Previously most loops would increment the end pointer,
  the size, and decrement the count of remaining items to construct.
  Now we only increment a single pointer for most iterations.

llvm-svn: 368547
2019-08-12 07:51:05 +00:00
..
benchmarks Improve codegen for deque. 2019-08-12 07:51:05 +00:00
cmake Revert "[libc++] Take 3: Do not cleverly link against libc++abi just because it happens to be there" 2019-08-08 00:28:06 +00:00
docs Bump the trunk version to 10.0.0svn 2019-07-18 11:51:05 +00:00
fuzzing Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
include Improve codegen for deque. 2019-08-12 07:51:05 +00:00
lib [libc++] Update ABI list for ABI v2 2019-06-17 19:37:26 +00:00
src [libc++] Take 2: Integrate the PSTL into libc++ 2019-08-05 18:29:14 +00:00
test Implement hh_mm_ss from P1466R3. Reviewed as https://reviews.llvm.org/D65365. 2019-08-08 14:36:07 +00:00
utils [libc++] Fix environment variable passing in libc++'s `SSHExecutor` `lit` utility 2019-08-08 17:33:35 +00:00
www Update c++2a status page with post-Cologne information 2019-07-22 15:13:14 +00:00
.arcconfig [libcxx] Set up .arcconfig to point to new Diffusion CXX repository 2017-12-04 17:55:28 +00:00
.clang-format Make clang-format use C++03 syntax 2017-04-15 02:45:43 +00:00
.gitignore
CMakeLists.txt Revert "[libc++] Take 3: Do not cleverly link against libc++abi just because it happens to be there" 2019-08-08 00:28:06 +00:00
CREDITS.TXT Try again, this time with the correct address 2017-12-29 19:26:53 +00:00
LICENSE.TXT Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
NOTES.TXT Reland "Use custom command and target to install libc++ headers" 2018-06-12 03:10:02 +00:00
TODO.TXT
appveyor-reqs-install.cmd Attempt to upgrade compiler used by appveyor builds 2019-04-03 20:40:01 +00:00
appveyor.yml disable appveyor config for MSVC 2015 2019-04-03 20:36:51 +00:00