Page MenuHomePhabricator

[libc++] Add __small_buffer
Needs ReviewPublic

Authored by philnik on Dec 17 2022, 4:46 AM.

Details

Reviewers
EricWF
ldionne
Group Reviewers
Restricted Project
Summary

This is an implementation detail for move_only_function (and potentially other type-erasing classes).

Diff Detail

Unit TestsFailed

TimeTest
21,280 mslibcxx CI C++03 > llvm-libc++-shared-cfg-in.libcxx::modules_include.sh.cpp
Script: -- : 'RUN: at line 57'; echo "" > /home/libcxx-builder/.buildkite-agent/builds/a478ac60952a-1/llvm-project/libcxx-ci/build/generic-cxx03/test/libcxx/Output/modules_include.sh.cpp.dir/t.tmp.sh
29,550 mslibcxx CI C++11 > llvm-libc++-shared-cfg-in.libcxx::modules_include.sh.cpp
Script: -- : 'RUN: at line 57'; echo "" > /home/libcxx-builder/.buildkite-agent/builds/2869844e5342-1/llvm-project/libcxx-ci/build/generic-cxx11/test/libcxx/Output/modules_include.sh.cpp.dir/t.tmp.sh
90,880 mslibcxx CI C++2b > llvm-libc++-shared-cfg-in.libcxx::modules_include.sh.cpp
Script: -- : 'RUN: at line 57'; echo "" > /home/libcxx-builder/.buildkite-agent/builds/5f4603f26a19-1/llvm-project/libcxx-ci/build/generic-cxx2b/test/libcxx/Output/modules_include.sh.cpp.dir/t.tmp.sh
820 mslibcxx CI C++2b > llvm-libc++-shared-cfg-in.libcxx/utilities/utility::small_buffer.pass.cpp
Script: -- : 'COMPILED WITH'; /usr/bin/clang++-17 /home/libcxx-builder/.buildkite-agent/builds/5f4603f26a19-1/llvm-project/libcxx-ci/libcxx/test/libcxx/utilities/utility/small_buffer.pass.cpp --target=x86_64-unknown-linux-gnu -nostdinc++ -I /home/libcxx-builder/.buildkite-agent/builds/5f4603f26a19-1/llvm-project/libcxx-ci/build/generic-cxx2b/include/c++/v1 -I /home/libcxx-builder/.buildkite-agent/builds/5f4603f26a19-1/llvm-project/libcxx-ci/build/generic-cxx2b/include/c++/v1 -I /home/libcxx-builder/.buildkite-agent/builds/5f4603f26a19-1/llvm-project/libcxx-ci/libcxx/test/support -std=c++2b -Werror -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-noexcept-type -Wno-atomic-alignment -Wno-user-defined-literals -Wno-tautological-compare -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D_LIBCPP_ENABLE_EXPERIMENTAL -D_LIBCPP_DISABLE_AVAILABILITY -Werror=thread-safety -Wuser-defined-warnings -lc++experimental -nostdlib++ -L /home/libcxx-builder/.buildkite-agent/builds/5f4603f26a19-1/llvm-project/libcxx-ci/build/generic-cxx2b/lib -Wl,-rpath,/home/libcxx-builder/.buildkite-agent/builds/5f4603f26a19-1/llvm-project/libcxx-ci/build/generic-cxx2b/lib -lc++ -pthread -o /home/libcxx-builder/.buildkite-agent/builds/5f4603f26a19-1/llvm-project/libcxx-ci/build/generic-cxx2b/test/libcxx/utilities/utility/Output/small_buffer.pass.cpp.dir/t.tmp.exe
30 mslibcxx CI GCC 12 / C++latest > llvm-libc++-shared-gcc-cfg-in.libcxx/utilities/utility::small_buffer.pass.cpp
Script: -- : 'COMPILED WITH'; /usr/bin/g++-12 /home/libcxx-builder/.buildkite-agent/builds/9d983b3d8bc0-1/llvm-project/libcxx-ci/libcxx/test/libcxx/utilities/utility/small_buffer.pass.cpp -nostdinc++ -I /home/libcxx-builder/.buildkite-agent/builds/9d983b3d8bc0-1/llvm-project/libcxx-ci/build/generic-gcc/include/c++/v1 -I /home/libcxx-builder/.buildkite-agent/builds/9d983b3d8bc0-1/llvm-project/libcxx-ci/build/generic-gcc/include/c++/v1 -I /home/libcxx-builder/.buildkite-agent/builds/9d983b3d8bc0-1/llvm-project/libcxx-ci/libcxx/test/support -std=c++2b -Werror -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-noexcept-type -Wno-aligned-allocation-unavailable -Wno-atomic-alignment -Wno-sized-deallocation -Wno-literal-suffix -Wno-user-defined-literals -Wno-tautological-compare -Wno-stringop-overread -Wno-stringop-overflow -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D_LIBCPP_ENABLE_EXPERIMENTAL -D_LIBCPP_DISABLE_AVAILABILITY -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS -Wno-placement-new -Wno-class-memaccess -lc++experimental -L /home/libcxx-builder/.buildkite-agent/builds/9d983b3d8bc0-1/llvm-project/libcxx-ci/build/generic-gcc/lib -Wl,-rpath,/home/libcxx-builder/.buildkite-agent/builds/9d983b3d8bc0-1/llvm-project/libcxx-ci/build/generic-gcc/lib -nodefaultlibs -lc++ -lm -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc -latomic -o /home/libcxx-builder/.buildkite-agent/builds/9d983b3d8bc0-1/llvm-project/libcxx-ci/build/generic-gcc/test/libcxx/utilities/utility/Output/small_buffer.pass.cpp.dir/t.tmp.exe

Event Timeline

philnik created this revision.Dec 17 2022, 4:46 AM
Herald added a project: Restricted Project. · View Herald TranscriptDec 17 2022, 4:46 AM
philnik requested review of this revision.Dec 17 2022, 4:46 AM
Herald added a project: Restricted Project. · View Herald TranscriptDec 17 2022, 4:46 AM
Herald added a reviewer: Restricted Project. · View Herald Transcript
EricWF requested changes to this revision.Dec 17 2022, 11:50 AM
EricWF added a subscriber: EricWF.

Why?

Changes need descriptions.

This revision now requires changes to proceed.Dec 17 2022, 11:50 AM
philnik edited the summary of this revision. (Show Details)Dec 18 2022, 4:39 AM
philnik updated this revision to Diff 483847.Dec 18 2022, 3:11 PM

Generate files

philnik updated this revision to Diff 483890.Dec 19 2022, 2:46 AM

Try to fix CI

ldionne accepted this revision.Dec 19 2022, 11:21 AM
ldionne added a subscriber: ldionne.
ldionne added inline comments.
libcxx/include/__utility/small_buffer.h
26–29
39–44

This avoids instantiating a lambda and it's pretty easy to do, so we might as well.

46–53

I think the = default ones should be _LIBCPP_HIDE_FROM_ABI, since they *are* generated at the end of the day.

I mainly glossed over it to see what it does.

libcxx/include/__utility/small_buffer.h
36

Small nit, since this is C++23, this could be a requires instead of a static_assert.

philnik updated this revision to Diff 487176.Jan 8 2023, 5:40 AM
philnik marked 4 inline comments as done.

Address comments

philnik updated this revision to Diff 501168.Feb 28 2023, 9:04 AM
  • Rebased
  • Try to fix CI