[PATCH] PR libstdc++/87431 re-adjust never-valueless optimizations

Jonathan Wakely jwakely@redhat.com
Wed Apr 3 22:27:00 GMT 2019


On 03/04/19 23:32 +0300, Antony Polukhin wrote:
>Looks good. Covers most of the use cases.
>
>Please consider adding filesystem::path, pair, tuple, string_view?,

string_view is trivially_copyable, and < 256 bytes, so works
automatically.

>error_code, list, deque (myabe all the other containers), optional, variant
>itself (for cases when variant holds another variant).

I hadn't thought about error_code and recursive variants, I'll check
those can be made to work.

filesystem::path had occurred to me, but I'm undecided.

pair, tuple and optional I think can be done as shown in my email.

>It would be very useful for the _Never_valueless_alt to return true for
>aggregates that hold only never valueles types. Not sure that there is a
>compiler builtin for getting all the aggregates types, but it could be
>implemented via metaprogramming.

Useful, but not essential.

This is a Quality of Implementation issue, and the cases where an
exception actually gets thrown and leaves the variant valueless are
going to be rare anyway. The codegen benefits of being never-valueless
are minor.

So I don't think we need to go too wild doing this.

>When is the ABI freeze for the C++17 additions?

The GCC 9 release, ideally.



More information about the Libstdc++ mailing list