<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/libcxx/include/memory, 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>Add default initialization to compressed_pair.</title>
<updated>2019-12-16T22:14:02+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2019-12-16T22:00:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=0fa118a9da6786a0aaf81e309d8c3b38bc5f61dd'/>
<id>urn:sha1:0fa118a9da6786a0aaf81e309d8c3b38bc5f61dd</id>
<content type='text'>
This change introduces the __default_init_tag to memory, and a corresponding
element constructor to allow for default initialization of either of the pair
values. This is useful for classes such as std::string where most (all)
constructors explicitly initialize the values in the constructor.

Patch by Martijn Vels (mvels@google.com)
Reviewed as https://reviews.llvm.org/D70617
</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>    [libcxx] Remove shared_ptr::make_shared</title>
<updated>2019-10-22T15:16:49+00:00</updated>
<author>
<name>Zoe Carver</name>
<email>z.zoelec2@gmail.com</email>
</author>
<published>2019-10-22T15:16:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=40c47680eb2a1cb9bb7f8598c319335731bd5204'/>
<id>urn:sha1:40c47680eb2a1cb9bb7f8598c319335731bd5204</id>
<content type='text'>
    Summary: This patch removes `shared_ptr::make_shared` as it is not part of the standard. This patch also adds __create_with_cntrl_block, which is a help function that can be used in std::allocate_shared and std::make_shared. This is the third patch (out of 4) from D66178.

    Reviewers: EricWF, mclow.lists, ldionne

    Subscribers: christof, dexonsmith, libcxx-commits

    Tags: #libc

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

llvm-svn: 375504
</content>
</entry>
<entry>
<title>    [libc++] Remove C++03 variadics in shared_ptr (v2)</title>
<updated>2019-10-07T21:41:15+00:00</updated>
<author>
<name>Zoe Carver</name>
<email>z.zoelec2@gmail.com</email>
</author>
<published>2019-10-07T21:41:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=a9d43b55c7d2f40b42a1aae7f84917d13121fce3'/>
<id>urn:sha1:a9d43b55c7d2f40b42a1aae7f84917d13121fce3</id>
<content type='text'>
    Summary: In my last patch (D67675) I forgot a few variadics. This patch removes the remaining make_shared and allocate_shared C++03 variadics.

    Reviewers: ldionne, EricWF, mclow.lists

    Subscribers: christof, dexonsmith, libcxx-commits

    Tags: #libc

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

llvm-svn: 373971
</content>
</entry>
<entry>
<title>[libcxx] Do not implicitly #include assert.h</title>
<updated>2019-09-26T11:12:29+00:00</updated>
<author>
<name>David Zarzycki</name>
<email>dave@znu.io</email>
</author>
<published>2019-09-26T11:12:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=a0686015106c2a04e85af82a4687895e12a4531c'/>
<id>urn:sha1:a0686015106c2a04e85af82a4687895e12a4531c</id>
<content type='text'>
Users should only get the assert() macros if they explicitly include
them.

Found after switching from the GNU C++ stdlib to the LLVM C++ stdlib.

llvm-svn: 372963
</content>
</entry>
<entry>
<title>    [libc++] Remove C++03 variadics in shared_ptr</title>
<updated>2019-09-24T20:55:54+00:00</updated>
<author>
<name>Zoe Carver</name>
<email>z.zoelec2@gmail.com</email>
</author>
<published>2019-09-24T20:55:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=4278a9e6b5025d9480532c687ab57e3a50c21fae'/>
<id>urn:sha1:4278a9e6b5025d9480532c687ab57e3a50c21fae</id>
<content type='text'>
    Summary: As suggested by @ldionne in D66178, this patch removes C++03 variadics //only//. Following patches will apply more updates.

    Reviewers: ldionne, EricWF, mclow.lists

    Subscribers: christof, dexonsmith, libcxx-commits, ldionne

    Tags: #libc

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

llvm-svn: 372780
</content>
</entry>
<entry>
<title>Recommit r370502: Make `vector` unconditionally move elements when</title>
<updated>2019-09-13T16:09:33+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2019-09-13T16:09:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=2a573784f3679a7abab921018eb1c585dce8e669'/>
<id>urn:sha1:2a573784f3679a7abab921018eb1c585dce8e669</id>
<content type='text'>
exceptions are disabled.

The patch was reverted due to some confusion about non-movable types. ie
types
that explicitly delete their move constructors. However, such types do
not meet
the requirement for `MoveConstructible`, which is required by
`std::vector`:

Summary:

`std::vector&lt;T&gt;` is free choose between using copy or move operations
when it
needs to resize. The standard only candidates that the correct exception
safety
guarantees are provided. When exceptions are disabled these guarantees
are
trivially satisfied. Meaning vector is free to optimize it's
implementation by
moving instead of copying.

This patch makes `std::vector` unconditionally move elements when
exceptions are
disabled. This optimization is conforming according to the current
standard wording.

There are concerns that moving in `-fno-noexceptions`mode will be a
surprise to
users. For example, a user may be surprised to find their code is slower
with
exceptions enabled than it is disabled. I'm sympathetic to this
surprised, but
I don't think it should block this optimization.

Reviewers: mclow.lists, ldionne, rsmith
Reviewed By: ldionne
Subscribers: zoecarver, christof, dexonsmith, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D62228

llvm-svn: 371867
</content>
</entry>
<entry>
<title>[libc++] Revert "Make `vector` unconditionally move elements when exceptions are disabled."</title>
<updated>2019-09-05T13:50:28+00:00</updated>
<author>
<name>Louis Dionne</name>
<email>ldionne@apple.com</email>
</author>
<published>2019-09-05T13:50:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=b370e7691a680b06f3c159c6a19582adf449de90'/>
<id>urn:sha1:b370e7691a680b06f3c159c6a19582adf449de90</id>
<content type='text'>
This reverts r370502, which broke the use case of a copy-only T (with a
deleted move constructor) when exceptions are disabled. Until we figure
out the right behavior, I'm reverting the commit.

llvm-svn: 371068
</content>
</entry>
<entry>
<title>Make `vector` unconditionally move elements when exceptions are disabled.</title>
<updated>2019-08-30T19:01:03+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2019-08-30T19:01:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=2dd37a31ce14720d967cbe87b1b3a058871c9651'/>
<id>urn:sha1:2dd37a31ce14720d967cbe87b1b3a058871c9651</id>
<content type='text'>
Summary:
`std::vector&lt;T&gt;` is free choose between using copy or move operations when it needs to resize. The standard only candidates that the correct exception safety guarantees are provided. When exceptions are disabled these guarantees are trivially satisfied. Meaning vector is free to optimize it's implementation by moving instead of copying.

This patch makes `std::vector` unconditionally move elements when exceptions are disabled.

This optimization is conforming according to the current standard wording.

There are concerns that moving in `-fno-noexceptions`mode will be a surprise to users. For example, a user may be surprised to find their code is slower with exceptions enabled than it is disabled. I'm sympathetic to this surprised, but I don't think it should block this optimization.


Reviewers: mclow.lists, ldionne, rsmith

Reviewed By: ldionne

Subscribers: zoecarver, christof, dexonsmith, libcxx-commits

Tags: #libc

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

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