HomePhabricator

[libc++] Fix ABI break in __bit_reference.

Authored by EricWF on Feb 19 2020, 8:59 AM.

Description

[libc++] Fix ABI break in __bit_reference.

The libc++ __bit_iterator type has weird ABI calling conventions as a
quirk
of the implementation. The const bit iterator is trivial, but the
non-const
bit iterator is not because it declares a user-defined copy constructor.

Changing this now is an ABI break, so this test ensures that each type
is trivial/non-trivial as expected.

The definition of 'non-trivial for the purposes of calls':

  A type is considered non-trivial for the purposes of calls if:
      * it has a non-trivial copy constructor, move constructor, or
            destructor, or
	        * all of its copy and move constructors are deleted.

(cherry picked from commit a829443cc7359ecf0f2de8f82519f511795675ec)

Details

Committed
hansFeb 20 2020, 6:32 AM
Parents
rGa572a8a147c7: [CMake] CheckAtomic.cmake: catch false positives in RISC-V
Branches
Unknown
Tags
Unknown