<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/libcxx/include/__split_buffer, 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>[Libc++] Use #pragma push_macro/pop_macro to better handle min/max on Windows</title>
<updated>2017-05-31T22:07:49+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2017-05-31T22:07:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=a016efb1dcda61e606e527b73791fbacf1bc9c86'/>
<id>urn:sha1:a016efb1dcda61e606e527b73791fbacf1bc9c86</id>
<content type='text'>
Summary:
This patch improves how libc++ handles min/max macros within the headers. Previously libc++ would undef them and emit a warning.
This patch changes libc++ to use `#pragma push_macro`  to save the macro before undefining it, and `#pragma pop_macro` to restore the macros and the end of the header.

Reviewers: mclow.lists, bcraig, compnerd, EricWF

Reviewed By: EricWF

Subscribers: cfe-commits, krytarowski

Differential Revision: https://reviews.llvm.org/D33080

llvm-svn: 304357
</content>
</entry>
<entry>
<title>Cleanup remaining _LIBCPP_HAS_NO_&lt;c++11-feature&gt; usages in container headers</title>
<updated>2017-04-19T01:23:04+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2017-04-19T01:23:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=afa7a957bd6ebe0ded8f74accd964b5a9967dc5b'/>
<id>urn:sha1:afa7a957bd6ebe0ded8f74accd964b5a9967dc5b</id>
<content type='text'>
llvm-svn: 300643
</content>
</entry>
<entry>
<title>Fix most failures caused by r300140</title>
<updated>2017-04-13T00:34:24+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2017-04-13T00:34:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=e1ec29869b946bda518f91ffa6aaed664028c888'/>
<id>urn:sha1:e1ec29869b946bda518f91ffa6aaed664028c888</id>
<content type='text'>
r300140 introduced a bunch of failures by changing the internal
interface provided by __compressed_pair. This patch fixes all of
the failures caused by the new interface by changing the existing
code to use it.

In addition to those changes this patch also fixes two separate
issues causing test failures:

1) Fix the member swap definition for __map_value_compare. Previously
   the swap was incorrectly configured to swap the comparator as const.

2) Fix an assertion failure in futures.task.members/ctor_func_alloc.pass.cpp
that incorrectly expected a move to take place when a single copy is sufficient.

There is one remaining failure regarding make_shared. I'll commit a fix for that
shortly.

llvm-svn: 300148
</content>
</entry>
<entry>
<title>Cleanup: move visibility/linkage attributes to the first declaration.</title>
<updated>2015-11-07T01:22:13+00:00</updated>
<author>
<name>Evgeniy Stepanov</name>
<email>eugeni.stepanov@gmail.com</email>
</author>
<published>2015-11-07T01:22:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=906c872db9344ce483282938f83ee5d4a262f3e6'/>
<id>urn:sha1:906c872db9344ce483282938f83ee5d4a262f3e6</id>
<content type='text'>
This change moves visibility attributes from out-of-class method
definitions to in-class declaration. This is needed for a switch to
attribute((internal_linkage)) (see http://reviews.llvm.org/D13925)
which can only appear on the first declaration.

This change does not touch istream/ostream/streambuf. They are
handled separately in http://reviews.llvm.org/D14409.

llvm-svn: 252385
</content>
</entry>
<entry>
<title>Implement the first part of N4258: 'Cleaning up noexcept in the Library'. This patch deals with swapping containers, and implements a more strict noexcept specification (a conforming extension) than the standard mandates.</title>
<updated>2015-07-13T20:04:56+00:00</updated>
<author>
<name>Marshall Clow</name>
<email>mclow.lists@gmail.com</email>
</author>
<published>2015-07-13T20:04:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=e3fbe1433b02d52a833b06219184ee4f4852b50a'/>
<id>urn:sha1:e3fbe1433b02d52a833b06219184ee4f4852b50a</id>
<content type='text'>
llvm-svn: 242056
</content>
</entry>
<entry>
<title>G M: Changes all references to "x inline" to "inline x" where x = _libcpp_always_inline or _libcpp_inline_visibility macros.</title>
<updated>2013-10-04T22:09:00+00:00</updated>
<author>
<name>Howard Hinnant</name>
<email>hhinnant@apple.com</email>
</author>
<published>2013-10-04T22:09:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=3af48ef76e11f63dfb548b24ff64562ce340434e'/>
<id>urn:sha1:3af48ef76e11f63dfb548b24ff64562ce340434e</id>
<content type='text'>
The patch touches these files:

locale
array
deque
new
string
utility
vector
__bit_reference
__split_buffer
locale_win32.h
 
There is no intended functionality change and it is expected that reversing the position of the inline keyword with regard to the other keywords does not change the meaning of anything, least not for apple/Linux etc.
 
It is intended to make libcxx more consistent with itself and to prevent the 1000 or so
"inline.cpp(3) : warning C4141: 'inline' : used more than once" warnings that MS's cl.exe compiler emits without this patch, i.e. if inline is not the first keyword before a function name etc.
 
Prefer "inline [other inline related keyword]" over "[other related keyword] inline".
After this patch, libcxx should be consistent to this pattern.

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