This brakes some bots http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/22441
/b/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/algorithm:648:10: fatal error: 'bit' file not found #include <bit> ^~~~~ 1 error generated. On Thu, Aug 16, 2018 at 2:36 PM Marshall Clow via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: marshall > Date: Thu Aug 16 14:35:38 2018 > New Revision: 339943 > > URL: http://llvm.org/viewvc/llvm-project?rev=339943&view=rev > Log: > Establish the <bit> header. NFC yet. Reviewed as > https://reviews.llvm.org/D50815 > > Added: > libcxx/trunk/include/bit > Modified: > libcxx/trunk/include/algorithm > libcxx/trunk/include/module.modulemap > libcxx/trunk/test/libcxx/double_include.sh.cpp > > Modified: libcxx/trunk/include/algorithm > URL: > http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/algorithm?rev=339943&r1=339942&r2=339943&view=diff > > ============================================================================== > --- libcxx/trunk/include/algorithm (original) > +++ libcxx/trunk/include/algorithm Thu Aug 16 14:35:38 2018 > @@ -645,13 +645,7 @@ template <class BidirectionalIterator, c > #include <functional> > #include <iterator> > #include <cstddef> > - > -#if defined(__IBMCPP__) > -#include "support/ibm/support.h" > -#endif > -#if defined(_LIBCPP_COMPILER_MSVC) > -#include <intrin.h> > -#endif > +#include <bit> > > #include <__debug> > > @@ -788,135 +782,6 @@ struct __debug_less > > #endif // _LIBCPP_DEBUG > > -// Precondition: __x != 0 > -inline _LIBCPP_INLINE_VISIBILITY > -unsigned __ctz(unsigned __x) { > -#ifndef _LIBCPP_COMPILER_MSVC > - return static_cast<unsigned>(__builtin_ctz(__x)); > -#else > - static_assert(sizeof(unsigned) == sizeof(unsigned long), ""); > - static_assert(sizeof(unsigned long) == 4, ""); > - unsigned long where; > - // Search from LSB to MSB for first set bit. > - // Returns zero if no set bit is found. > - if (_BitScanForward(&where, __x)) > - return where; > - return 32; > -#endif > -} > - > -inline _LIBCPP_INLINE_VISIBILITY > -unsigned long __ctz(unsigned long __x) { > -#ifndef _LIBCPP_COMPILER_MSVC > - return static_cast<unsigned long>(__builtin_ctzl(__x)); > -#else > - static_assert(sizeof(unsigned long) == sizeof(unsigned), ""); > - return __ctz(static_cast<unsigned>(__x)); > -#endif > -} > - > -inline _LIBCPP_INLINE_VISIBILITY > -unsigned long long __ctz(unsigned long long __x) { > -#ifndef _LIBCPP_COMPILER_MSVC > - return static_cast<unsigned long long>(__builtin_ctzll(__x)); > -#else > - unsigned long where; > -// Search from LSB to MSB for first set bit. > -// Returns zero if no set bit is found. > -#if defined(_LIBCPP_HAS_BITSCAN64) > - (defined(_M_AMD64) || defined(__x86_64__)) > - if (_BitScanForward64(&where, __x)) > - return static_cast<int>(where); > -#else > - // Win32 doesn't have _BitScanForward64 so emulate it with two 32 bit > calls. > - // Scan the Low Word. > - if (_BitScanForward(&where, static_cast<unsigned long>(__x))) > - return where; > - // Scan the High Word. > - if (_BitScanForward(&where, static_cast<unsigned long>(__x >> 32))) > - return where + 32; // Create a bit offset from the LSB. > -#endif > - return 64; > -#endif // _LIBCPP_COMPILER_MSVC > -} > - > -// Precondition: __x != 0 > -inline _LIBCPP_INLINE_VISIBILITY > -unsigned __clz(unsigned __x) { > -#ifndef _LIBCPP_COMPILER_MSVC > - return static_cast<unsigned>(__builtin_clz(__x)); > -#else > - static_assert(sizeof(unsigned) == sizeof(unsigned long), ""); > - static_assert(sizeof(unsigned long) == 4, ""); > - unsigned long where; > - // Search from LSB to MSB for first set bit. > - // Returns zero if no set bit is found. > - if (_BitScanReverse(&where, __x)) > - return 31 - where; > - return 32; // Undefined Behavior. > -#endif > -} > - > -inline _LIBCPP_INLINE_VISIBILITY > -unsigned long __clz(unsigned long __x) { > -#ifndef _LIBCPP_COMPILER_MSVC > - return static_cast<unsigned long>(__builtin_clzl (__x)); > -#else > - static_assert(sizeof(unsigned) == sizeof(unsigned long), ""); > - return __clz(static_cast<unsigned>(__x)); > -#endif > -} > - > -inline _LIBCPP_INLINE_VISIBILITY > -unsigned long long __clz(unsigned long long __x) { > -#ifndef _LIBCPP_COMPILER_MSVC > - return static_cast<unsigned long long>(__builtin_clzll(__x)); > -#else > - unsigned long where; > -// BitScanReverse scans from MSB to LSB for first set bit. > -// Returns 0 if no set bit is found. > -#if defined(_LIBCPP_HAS_BITSCAN64) > - if (_BitScanReverse64(&where, __x)) > - return static_cast<int>(63 - where); > -#else > - // Scan the high 32 bits. > - if (_BitScanReverse(&where, static_cast<unsigned long>(__x >> 32))) > - return 63 - (where + 32); // Create a bit offset from the MSB. > - // Scan the low 32 bits. > - if (_BitScanReverse(&where, static_cast<unsigned long>(__x))) > - return 63 - where; > -#endif > - return 64; // Undefined Behavior. > -#endif // _LIBCPP_COMPILER_MSVC > -} > - > -inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned __x) { > -#ifndef _LIBCPP_COMPILER_MSVC > - return __builtin_popcount (__x); > -#else > - static_assert(sizeof(unsigned) == 4, ""); > - return __popcnt(__x); > -#endif > -} > - > -inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned long __x) { > -#ifndef _LIBCPP_COMPILER_MSVC > - return __builtin_popcountl (__x); > -#else > - static_assert(sizeof(unsigned long) == 4, ""); > - return __popcnt(__x); > -#endif > -} > - > -inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned long long __x) { > -#ifndef _LIBCPP_COMPILER_MSVC > - return __builtin_popcountll(__x); > -#else > - static_assert(sizeof(unsigned long long) == 8, ""); > - return __popcnt64(__x); > -#endif > -} > - > // all_of > > template <class _InputIterator, class _Predicate> > > Added: libcxx/trunk/include/bit > URL: > http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/bit?rev=339943&view=auto > > ============================================================================== > --- libcxx/trunk/include/bit (added) > +++ libcxx/trunk/include/bit Thu Aug 16 14:35:38 2018 > @@ -0,0 +1,169 @@ > +// -*- C++ -*- > +//===------------------------------ bit > ----------------------------------===// > +// > +// The LLVM Compiler Infrastructure > +// > +// This file is dual licensed under the MIT and the University of > Illinois Open > +// Source Licenses. See LICENSE.TXT for details. > +// > > +//===---------------------------------------------------------------------===// > + > +#ifndef _LIBCPP_BIT > +#define _LIBCPP_BIT > + > +/* > + bit synopsis > + > +namespace std { > + > +} // namespace std > + > +*/ > + > +#include <__config> > + > +#if defined(__IBMCPP__) > +#include "support/ibm/support.h" > +#endif > +#if defined(_LIBCPP_COMPILER_MSVC) > +#include <intrin.h> > +#endif > + > +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) > +#pragma GCC system_header > +#endif > + > +_LIBCPP_BEGIN_NAMESPACE_STD > + > +// Precondition: __x != 0 > +inline _LIBCPP_INLINE_VISIBILITY > +unsigned __ctz(unsigned __x) { > +#ifndef _LIBCPP_COMPILER_MSVC > + return static_cast<unsigned>(__builtin_ctz(__x)); > +#else > + static_assert(sizeof(unsigned) == sizeof(unsigned long), ""); > + static_assert(sizeof(unsigned long) == 4, ""); > + unsigned long where; > + // Search from LSB to MSB for first set bit. > + // Returns zero if no set bit is found. > + if (_BitScanForward(&where, __x)) > + return where; > + return 32; > +#endif > +} > + > +inline _LIBCPP_INLINE_VISIBILITY > +unsigned long __ctz(unsigned long __x) { > +#ifndef _LIBCPP_COMPILER_MSVC > + return static_cast<unsigned long>(__builtin_ctzl(__x)); > +#else > + static_assert(sizeof(unsigned long) == sizeof(unsigned), ""); > + return __ctz(static_cast<unsigned>(__x)); > +#endif > +} > + > +inline _LIBCPP_INLINE_VISIBILITY > +unsigned long long __ctz(unsigned long long __x) { > +#ifndef _LIBCPP_COMPILER_MSVC > + return static_cast<unsigned long long>(__builtin_ctzll(__x)); > +#else > + unsigned long where; > +// Search from LSB to MSB for first set bit. > +// Returns zero if no set bit is found. > +#if defined(_LIBCPP_HAS_BITSCAN64) > + (defined(_M_AMD64) || defined(__x86_64__)) > + if (_BitScanForward64(&where, __x)) > + return static_cast<int>(where); > +#else > + // Win32 doesn't have _BitScanForward64 so emulate it with two 32 bit > calls. > + // Scan the Low Word. > + if (_BitScanForward(&where, static_cast<unsigned long>(__x))) > + return where; > + // Scan the High Word. > + if (_BitScanForward(&where, static_cast<unsigned long>(__x >> 32))) > + return where + 32; // Create a bit offset from the LSB. > +#endif > + return 64; > +#endif // _LIBCPP_COMPILER_MSVC > +} > + > +// Precondition: __x != 0 > +inline _LIBCPP_INLINE_VISIBILITY > +unsigned __clz(unsigned __x) { > +#ifndef _LIBCPP_COMPILER_MSVC > + return static_cast<unsigned>(__builtin_clz(__x)); > +#else > + static_assert(sizeof(unsigned) == sizeof(unsigned long), ""); > + static_assert(sizeof(unsigned long) == 4, ""); > + unsigned long where; > + // Search from LSB to MSB for first set bit. > + // Returns zero if no set bit is found. > + if (_BitScanReverse(&where, __x)) > + return 31 - where; > + return 32; // Undefined Behavior. > +#endif > +} > + > +inline _LIBCPP_INLINE_VISIBILITY > +unsigned long __clz(unsigned long __x) { > +#ifndef _LIBCPP_COMPILER_MSVC > + return static_cast<unsigned long>(__builtin_clzl (__x)); > +#else > + static_assert(sizeof(unsigned) == sizeof(unsigned long), ""); > + return __clz(static_cast<unsigned>(__x)); > +#endif > +} > + > +inline _LIBCPP_INLINE_VISIBILITY > +unsigned long long __clz(unsigned long long __x) { > +#ifndef _LIBCPP_COMPILER_MSVC > + return static_cast<unsigned long long>(__builtin_clzll(__x)); > +#else > + unsigned long where; > +// BitScanReverse scans from MSB to LSB for first set bit. > +// Returns 0 if no set bit is found. > +#if defined(_LIBCPP_HAS_BITSCAN64) > + if (_BitScanReverse64(&where, __x)) > + return static_cast<int>(63 - where); > +#else > + // Scan the high 32 bits. > + if (_BitScanReverse(&where, static_cast<unsigned long>(__x >> 32))) > + return 63 - (where + 32); // Create a bit offset from the MSB. > + // Scan the low 32 bits. > + if (_BitScanReverse(&where, static_cast<unsigned long>(__x))) > + return 63 - where; > +#endif > + return 64; // Undefined Behavior. > +#endif // _LIBCPP_COMPILER_MSVC > +} > + > +inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned __x) { > +#ifndef _LIBCPP_COMPILER_MSVC > + return __builtin_popcount (__x); > +#else > + static_assert(sizeof(unsigned) == 4, ""); > + return __popcnt(__x); > +#endif > +} > + > +inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned long __x) { > +#ifndef _LIBCPP_COMPILER_MSVC > + return __builtin_popcountl (__x); > +#else > + static_assert(sizeof(unsigned long) == 4, ""); > + return __popcnt(__x); > +#endif > +} > + > +inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned long long __x) { > +#ifndef _LIBCPP_COMPILER_MSVC > + return __builtin_popcountll(__x); > +#else > + static_assert(sizeof(unsigned long long) == 8, ""); > + return __popcnt64(__x); > +#endif > +} > + > +_LIBCPP_END_NAMESPACE_STD > + > +#endif // _LIBCPP_BIT > > Modified: libcxx/trunk/include/module.modulemap > URL: > http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/module.modulemap?rev=339943&r1=339942&r2=339943&view=diff > > ============================================================================== > --- libcxx/trunk/include/module.modulemap (original) > +++ libcxx/trunk/include/module.modulemap Thu Aug 16 14:35:38 2018 > @@ -228,6 +228,10 @@ module std [system] { > header "atomic" > export * > } > + module bit { > + header "bit" > + export * > + } > module bitset { > header "bitset" > export string > > Modified: libcxx/trunk/test/libcxx/double_include.sh.cpp > URL: > http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/double_include.sh.cpp?rev=339943&r1=339942&r2=339943&view=diff > > ============================================================================== > --- libcxx/trunk/test/libcxx/double_include.sh.cpp (original) > +++ libcxx/trunk/test/libcxx/double_include.sh.cpp Thu Aug 16 14:35:38 2018 > @@ -27,6 +27,7 @@ > #ifndef _LIBCPP_HAS_NO_THREADS > #include <atomic> > #endif > +#include <bit> > #include <bitset> > #include <cassert> > #include <ccomplex> > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits