<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/libcxx/include/deque, branch meklort-10.0.1</title>
<subtitle>Project Ortega BCM5719 LLVM</subtitle>
<id>https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1</id>
<link rel='self' href='https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/'/>
<updated>2019-12-16T23:38:58+00:00</updated>
<entry>
<title>[libc++] Rework compressed pair constructors.</title>
<updated>2019-12-16T23:38:58+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2019-12-16T23:23:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=549545b64aab77d2a1784062451ee1c33f8324d2'/>
<id>urn:sha1:549545b64aab77d2a1784062451ee1c33f8324d2</id>
<content type='text'>
This patch de-duplicates most compressed pair constructors
to use the same code in C++11 and C++03.

Part of doing that is deleting the "__second_tag()" and replacing
it with a "__value_init_tag()" which has the same effect, but
allows for the removal of the special "one-arg" first element
constructor.

This patch is intended to have no semantic change.
</content>
</entry>
<entry>
<title>Rename __is_foo_iterator traits to reflect their Cpp17 nature.</title>
<updated>2019-11-18T06:49:32+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2019-11-18T06:46:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=f82dba019253ced73ceadfde10e5f150bdb182f3'/>
<id>urn:sha1:f82dba019253ced73ceadfde10e5f150bdb182f3</id>
<content type='text'>
With the upcoming introduction of iterator concepts in ranges,
the meaning of "__is_contiguous_iterator" changes drastically.

Currently we intend it to mean "does it have this iterator category",
but it could now also mean "does it meet the requirements of this
concept", and these can be different.
</content>
</entry>
<entry>
<title>[libc++] Rename __to_raw_pointer to __to_address.</title>
<updated>2019-11-16T22:16:09+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2019-11-16T22:13:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=0068c5913999b14627c27433c8d846a2ef5fbe00'/>
<id>urn:sha1:0068c5913999b14627c27433c8d846a2ef5fbe00</id>
<content type='text'>
This function has the same behavior as the now-standand std::to_address.
Re-using the name makes the behavior more clear, and in the future it
will allow us to correctly get the raw pointer for user provided pointer
types.
</content>
</entry>
<entry>
<title>Improve codegen for deque.</title>
<updated>2019-08-12T07:51:05+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2019-08-12T07:51:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=b0945e1bd2e2d7ac6dd8152e479a56db302d981e'/>
<id>urn:sha1:b0945e1bd2e2d7ac6dd8152e479a56db302d981e</id>
<content type='text'>
This patch rewrites a few loops in deque and split_buffer to better
optimize the codegen. For constructors like
`deque&lt;unsigned char&gt; 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
</content>
</entry>
<entry>
<title>Refactor deque to centralize handling of spare blocks.</title>
<updated>2019-08-01T23:11:18+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2019-08-01T23:11:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=d544d1441d98308eeea98969c3311bbd24fd6b0f'/>
<id>urn:sha1:d544d1441d98308eeea98969c3311bbd24fd6b0f</id>
<content type='text'>
I have upcoming changes that modify how deque handles spare blocks.
This cleanup is intended to make those changes easier to review
and understand. This patch should have NFC.

llvm-svn: 367631
</content>
</entry>
<entry>
<title>Mark 'front()' and 'back()' as noexcept for array/deque/string/string_view. These are just rebranded 'operator[]', and should be noexcept like it is.</title>
<updated>2019-03-19T03:30:07+00:00</updated>
<author>
<name>Marshall Clow</name>
<email>mclow.lists@gmail.com</email>
</author>
<published>2019-03-19T03:30:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=9ea0e473f0b96455b918eefcf8fc535638674a1f'/>
<id>urn:sha1:9ea0e473f0b96455b918eefcf8fc535638674a1f</id>
<content type='text'>
llvm-svn: 356435
</content>
</entry>
<entry>
<title>Add noexcept to operator[] for array and deque. This is an extension. We already do this for string and string_view. This should give better codegen inside of noexcept functions.</title>
<updated>2019-03-14T21:56:57+00:00</updated>
<author>
<name>Marshall Clow</name>
<email>mclow.lists@gmail.com</email>
</author>
<published>2019-03-14T21:56:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=5f6a5ac19cddda2fbc67582d6b12a92493e60b4e'/>
<id>urn:sha1:5f6a5ac19cddda2fbc67582d6b12a92493e60b4e</id>
<content type='text'>
llvm-svn: 356209
</content>
</entry>
<entry>
<title>Update more file headers across all of the LLVM projects in the monorepo</title>
<updated>2019-01-19T10:56:40+00:00</updated>
<author>
<name>Chandler Carruth</name>
<email>chandlerc@gmail.com</email>
</author>
<published>2019-01-19T10:56:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=57b08b0944046a6a57ee9b7b479181f548a5b9b4'/>
<id>urn:sha1:57b08b0944046a6a57ee9b7b479181f548a5b9b4</id>
<content type='text'>
to reflect the new license. These used slightly different spellings that
defeated my regular expressions.

We understand that people may be surprised that we're moving the header
entirely to discuss the new license. We checked this carefully with the
Foundation's lawyer and we believe this is the correct approach.

Essentially, all code in the project is now made available by the LLVM
project under our new license, so you will see that the license headers
include that license only. Some of our contributors have contributed
code under our old license, and accordingly, we have retained a copy of
our old license notice in the top-level files in each project and
repository.

llvm-svn: 351648
</content>
</entry>
<entry>
<title>Implement P1209 - Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20. Reviewed as https://reviews.llvm.org/D55532</title>
<updated>2018-12-14T18:49:35+00:00</updated>
<author>
<name>Marshall Clow</name>
<email>mclow.lists@gmail.com</email>
</author>
<published>2018-12-14T18:49:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=f60c63c090114a6b5f0ba0a7aacd67e6c92920e7'/>
<id>urn:sha1:f60c63c090114a6b5f0ba0a7aacd67e6c92920e7</id>
<content type='text'>
llvm-svn: 349178
</content>
</entry>
<entry>
<title>[libcxx] Add assertion in deque::pop_back when popping from an empty deque</title>
<updated>2018-12-12T23:58:25+00:00</updated>
<author>
<name>Louis Dionne</name>
<email>ldionne@apple.com</email>
</author>
<published>2018-12-12T23:58:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=589f1764fc5dbe8cfdd35791ed970b7e0932d7d7'/>
<id>urn:sha1:589f1764fc5dbe8cfdd35791ed970b7e0932d7d7</id>
<content type='text'>
Also, add tests making sure that vector and deque both catch the problem
when assertions are enabled. Otherwise, deque would segfault and vector
would never terminate.

llvm-svn: 348994
</content>
</entry>
</feed>
