http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-autoconf/builds/27733 http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/14670
On Thu, Aug 16, 2018 at 3:30 PM Vitaly Buka <vitalyb...@google.com> wrote: > 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