[all-commits] [llvm/llvm-project] 7a1879: [libc++] Fix ABI break in __bit_reference.

Eric via All-commits all-commits at lists.llvm.org
Thu Feb 20 06:34:05 PST 2020


  Branch: refs/heads/release/10.x
  Home:   https://github.com/llvm/llvm-project
  Commit: 7a18790ae2f4b92dc26b2be963e588c8837d0076
      https://github.com/llvm/llvm-project/commit/7a18790ae2f4b92dc26b2be963e588c8837d0076
  Author: Eric Fiselier <eric at efcs.ca>
  Date:   2020-02-20 (Thu, 20 Feb 2020)

  Changed paths:
    M libcxx/include/__bit_reference
    A libcxx/test/libcxx/containers/sequences/vector.bool/trivial_for_purposes_of_call.pass.cpp

  Log Message:
  -----------
  [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)




More information about the All-commits mailing list