[libcxx-commits] [PATCH] D93830: [libc++] Update generate_feature_test_macro_components.py to match SD-6

Arthur O'Dwyer via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Sat Dec 26 19:24:52 PST 2020


Quuxplusone created this revision.
Quuxplusone added reviewers: ldionne, curdeius.
Quuxplusone added a project: libc++.
Herald added a reviewer: jfb.
Herald added subscribers: jfb, arichardson.
Quuxplusone requested review of this revision.
Herald added a subscriber: libcxx-commits.
Herald added a reviewer: libc++.

There are two parts to this (which I have as separate commits locally but might as well squash when landing):

- Alphabetize all the things. I did this by having the script itself print out `repr`s of things, which has the side effect of replacing all the `"` with `'`; I think that's a fair price to pay. This makes the list easy to compare with SD-6's official list <https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations#library-feature-test-macros>, //and// makes it more obvious where to insert new entries. Two new `assert`s force people to add new entries in the proper place.

- Update the list to match SD-6. It's still a little confusing because in many cases C++17 and C++20 have different values, and libc++ implements the C++17 behavior but not the C++20 behavior; `'unimplemented'` can't represent that scenario. In those cases I've just left the macro's C++17 value alone, sometimes with a comment, sometimes not.

Most newly added macros are unimplemented. I've marked a few as implemented, though, based on my reading of the code; for example I'm pretty sure `__cpp_lib_latch` is implemented since we have `<latch>`.  I might well have marked some as "unimplemented" that are actually implemented; I wasn't //that// diligent about it.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D93830

Files:
  libcxx/docs/FeatureTestMacroTable.rst
  libcxx/include/version
  libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/array.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/barrier.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/bit.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/cmath.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/compare.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/complex.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/concepts.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/execution.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/iterator.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/latch.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/semaphore.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/string.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/string_view.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/thread.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/type_traits.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.pass.cpp
  libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
  libcxx/utils/generate_feature_test_macro_components.py

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D93830.313769.patch
Type: text/x-patch
Size: 184683 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20201227/2881608f/attachment-0001.bin>


More information about the libcxx-commits mailing list