[libcxx] r294107 - Recommit [libcxx] Never use <cassert> within libc++
Hahnfeld, Jonas via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 6 02:10:24 PST 2017
Hi Eric,
I'm getting quite a few failures with LIBCXX_ENABLE_ASSERTIONS=On (didn't do a
clean build at first):
Failing Tests (32):
libc++ ::
std/experimental/filesystem/class.directory_entry/directory_entry.cons.pass.cpp
libc++ ::
std/experimental/filesystem/class.directory_entry/directory_entry.mods.pass.cpp
libc++ ::
std/experimental/filesystem/class.directory_entry/directory_entry.obs/comparisons.pass.cpp
libc++ ::
std/experimental/filesystem/class.directory_iterator/directory_iterator.members/ctor.pass.cpp
libc++ ::
std/experimental/filesystem/class.directory_iterator/directory_iterator.members/increment.pass.cpp
libc++ ::
std/experimental/filesystem/class.directory_iterator/directory_iterator.nonmembers/begin_end.pass.cpp
libc++ ::
std/experimental/filesystem/class.path/path.itr/iterator.pass.cpp
libc++ ::
std/experimental/filesystem/class.path/path.member/path.append.pass.cpp
libc++ ::
std/experimental/filesystem/class.path/path.member/path.assign/source.pass.cpp
libc++ ::
std/experimental/filesystem/class.path/path.member/path.compare.pass.cpp
libc++ ::
std/experimental/filesystem/class.path/path.member/path.concat.pass.cpp
libc++ ::
std/experimental/filesystem/class.path/path.member/path.decompose/path.decompose.pass.cpp
libc++ ::
std/experimental/filesystem/class.path/path.member/path.modifiers/make_preferred.pass.cpp
libc++ ::
std/experimental/filesystem/class.path/path.member/path.modifiers/remove_filename.pass.cpp
libc++ ::
std/experimental/filesystem/class.path/path.member/path.modifiers/replace_extension.pass.cpp
libc++ ::
std/experimental/filesystem/class.path/path.member/path.modifiers/swap.pass.cpp
libc++ ::
std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.members/ctor.pass.cpp
libc++ ::
std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.members/depth.pass.cpp
libc++ ::
std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp
libc++ ::
std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.nonmembers/begin_end.pass.cpp
libc++ ::
std/experimental/filesystem/fs.op.funcs/fs.op.canonical/canonical.pass.cpp
libc++ :: std/experimental/filesystem/fs.op.funcs/fs.op.copy/copy.pass.cpp
libc++ ::
std/experimental/filesystem/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp
libc++ ::
std/experimental/filesystem/fs.op.funcs/fs.op.permissions/permissions.pass.cpp
libc++ ::
std/experimental/filesystem/fs.op.funcs/fs.op.read_symlink/read_symlink.pass.cpp
libc++ ::
std/experimental/filesystem/fs.op.funcs/fs.op.remove/remove.pass.cpp
libc++ ::
std/experimental/filesystem/fs.op.funcs/fs.op.remove_all/remove_all.pass.cpp
libc++ ::
std/experimental/filesystem/fs.op.funcs/fs.op.resize_file/resize_file.pass.cpp
libc++ ::
std/experimental/filesystem/fs.op.funcs/fs.op.space/space.pass.cpp
libc++ ::
std/experimental/filesystem/fs.op.funcs/fs.op.status/status.pass.cpp
libc++ ::
std/experimental/filesystem/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp
libc++ ::
std/experimental/filesystem/fs.op.funcs/fs.op.temp_dir_path/temp_directory_path.pass.cpp
They go away with LIBCXX_ENABLE_ASSERTIONS=Off which is the new default. Is
this expected to happen?
Thanks,
Jonas
> -----Original Message-----
> From: cfe-commits [mailto:cfe-commits-bounces at lists.llvm.org] On Behalf
> Of Eric Fiselier via cfe-commits
> Sent: Sunday, February 05, 2017 12:22 AM
> To: cfe-commits at lists.llvm.org
> Subject: [libcxx] r294107 - Recommit [libcxx] Never use <cassert> within
> libc++
>
> Author: ericwf
> Date: Sat Feb 4 17:22:28 2017
> New Revision: 294107
>
> URL: http://llvm.org/viewvc/llvm-project?rev=294107&view=rev
> Log:
> Recommit [libcxx] Never use <cassert> within libc++
>
> It is my opinion that libc++ should never use `<cassert>`, including in the
> `dylib`.
> This patch remove all uses of `assert` from within libc++ and replaces most
> of
> them with `_LIBCPP_ASSERT` instead.
>
> Additionally this patch turn `LIBCXX_ENABLE_ASSERTIONS` off by default,
> because the standard library should not be aborting user programs unless
> explicitly asked to.
>
> Modified:
> libcxx/trunk/CMakeLists.txt
> libcxx/trunk/include/__config
> libcxx/trunk/include/__threading_support
> libcxx/trunk/src/condition_variable.cpp
> libcxx/trunk/src/experimental/filesystem/path.cpp
> libcxx/trunk/src/mutex.cpp
> libcxx/trunk/src/system_error.cpp
>
> Modified: libcxx/trunk/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-
> project/libcxx/trunk/CMakeLists.txt?rev=294107&r1=294106&r2=294107&vie
> w=diff
> ==========================================================
> ====================
> --- libcxx/trunk/CMakeLists.txt (original)
> +++ libcxx/trunk/CMakeLists.txt Sat Feb 4 17:22:28 2017
> @@ -60,7 +60,7 @@ endif()
> include(CMakeDependentOption)
>
> # Basic
> options ---------------------------------------------------------------
> -option(LIBCXX_ENABLE_ASSERTIONS "Enable assertions independent of
> build mode." ON)
> +option(LIBCXX_ENABLE_ASSERTIONS "Enable assertions independent of
> build
> +mode." OFF)
> option(LIBCXX_ENABLE_SHARED "Build libc++ as a shared library." ON)
> option(LIBCXX_ENABLE_STATIC "Build libc++ as a static library." ON)
> option(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY "Build
> libc++experimental.a" ON) @@ -501,6 +501,7 @@ endif() # Assertion flags
> ==========================================================
> ===
> define_if(LIBCXX_ENABLE_ASSERTIONS -UNDEBUG)
> define_if_not(LIBCXX_ENABLE_ASSERTIONS -DNDEBUG)
> +define_if(LIBCXX_ENABLE_ASSERTIONS -D_LIBCPP_DEBUG=0)
> define_if(LIBCXX_DEBUG_BUILD -D_DEBUG)
> if (LIBCXX_ENABLE_ASSERTIONS AND NOT LIBCXX_DEBUG_BUILD)
> # MSVC doesn't like _DEBUG on release builds. See PR 4379.
>
> Modified: libcxx/trunk/include/__config
> URL: http://llvm.org/viewvc/llvm-
> project/libcxx/trunk/include/__config?rev=294107&r1=294106&r2=294107&v
> iew=diff
> ==========================================================
> ====================
> --- libcxx/trunk/include/__config (original)
> +++ libcxx/trunk/include/__config Sat Feb 4 17:22:28 2017
> @@ -817,7 +817,9 @@ template <unsigned> struct __static_asse
> # else
> # error Supported values for _LIBCPP_DEBUG are 0 and 1
> # endif
> +# if !defined(_LIBCPP_BUILDING_LIBRARY)
> # define _LIBCPP_EXTERN_TEMPLATE(...)
> +# endif
> #endif
>
> #ifndef _LIBCPP_EXTERN_TEMPLATE
>
> Modified: libcxx/trunk/include/__threading_support
> URL: http://llvm.org/viewvc/llvm-
> project/libcxx/trunk/include/__threading_support?rev=294107&r1=294106&
> r2=294107&view=diff
> ==========================================================
> ====================
> --- libcxx/trunk/include/__threading_support (original)
> +++ libcxx/trunk/include/__threading_support Sat Feb 4 17:22:28 2017
> @@ -25,7 +25,6 @@
> # include <pthread.h>
> # include <sched.h>
> #elif defined(_LIBCPP_HAS_THREAD_API_WIN32)
> -#include <assert.h>
> #include <Windows.h>
> #include <process.h>
> #include <fibersapi.h>
>
> Modified: libcxx/trunk/src/condition_variable.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/libcxx/trunk/src/condition_variable.cpp?rev=294107&r1=294106&r2=
> 294107&view=diff
> ==========================================================
> ====================
> --- libcxx/trunk/src/condition_variable.cpp (original)
> +++ libcxx/trunk/src/condition_variable.cpp Sat Feb 4 17:22:28 2017
> @@ -14,7 +14,6 @@
> #include "condition_variable"
> #include "thread"
> #include "system_error"
> -#include "cassert"
>
> _LIBCPP_BEGIN_NAMESPACE_STD
>
>
> Modified: libcxx/trunk/src/experimental/filesystem/path.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/libcxx/trunk/src/experimental/filesystem/path.cpp?rev=294107&r1=
> 294106&r2=294107&view=diff
> ==========================================================
> ====================
> --- libcxx/trunk/src/experimental/filesystem/path.cpp (original)
> +++ libcxx/trunk/src/experimental/filesystem/path.cpp Sat Feb 4
> +++ 17:22:28 2017
> @@ -6,11 +6,9 @@
> // Source Licenses. See LICENSE.TXT for details.
> //
>
> //===----------------------------------------------------------------------===//
> -#undef NDEBUG
> #include "experimental/filesystem"
> #include "string_view"
> #include "utility"
> -#include "cassert"
>
> namespace { namespace parser
> {
> @@ -113,7 +111,6 @@ public:
> void decrement() noexcept {
> const PosPtr REnd = &Path.front() - 1;
> const PosPtr RStart = getCurrentTokenStartPos() - 1;
> - assert(RStart != REnd);
>
> switch (State) {
> case PS_AtEnd: {
> @@ -322,7 +319,6 @@ string_view_t path::__root_path_raw() co
> auto NextCh = PP.peek();
> if (NextCh && *NextCh == '/') {
> ++PP;
> - assert(PP.State == PathParser::PS_InRootDir);
> return createView(__pn_.data(), &PP.RawEntry.back());
> }
> return PP.RawEntry;
>
> Modified: libcxx/trunk/src/mutex.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/libcxx/trunk/src/mutex.cpp?rev=294107&r1=294106&r2=294107&vie
> w=diff
> ==========================================================
> ====================
> --- libcxx/trunk/src/mutex.cpp (original)
> +++ libcxx/trunk/src/mutex.cpp Sat Feb 4 17:22:28 2017
> @@ -11,7 +11,6 @@
> #include "mutex"
> #include "limits"
> #include "system_error"
> -#include "cassert"
> #include "include/atomic_support.h"
>
> _LIBCPP_BEGIN_NAMESPACE_STD
> @@ -45,7 +44,7 @@ mutex::unlock() _NOEXCEPT {
> int ec = __libcpp_mutex_unlock(&__m_);
> (void)ec;
> - assert(ec == 0);
> + _LIBCPP_ASSERT(ec == 0, "call to mutex::unlock failed");
> }
>
> // recursive_mutex
> @@ -61,7 +60,7 @@ recursive_mutex::~recursive_mutex()
> {
> int e = __libcpp_recursive_mutex_destroy(&__m_);
> (void)e;
> - assert(e == 0);
> + _LIBCPP_ASSERT(e == 0, "call to ~recursive_mutex() failed");
> }
>
> void
> @@ -77,7 +76,7 @@ recursive_mutex::unlock() _NOEXCEPT {
> int e = __libcpp_recursive_mutex_unlock(&__m_);
> (void)e;
> - assert(e == 0);
> + _LIBCPP_ASSERT(e == 0, "call to recursive_mutex::unlock() failed");
> }
>
> bool
>
> Modified: libcxx/trunk/src/system_error.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/libcxx/trunk/src/system_error.cpp?rev=294107&r1=294106&r2=2941
> 07&view=diff
> ==========================================================
> ====================
> --- libcxx/trunk/src/system_error.cpp (original)
> +++ libcxx/trunk/src/system_error.cpp Sat Feb 4 17:22:28 2017
> @@ -17,9 +17,9 @@
> #include "cstring"
> #include "cstdio"
> #include "cstdlib"
> -#include "cassert"
> #include "string"
> #include "string.h"
> +#include "__debug"
>
> #if defined(__ANDROID__)
> #include <android/api-level.h>
> @@ -96,7 +96,7 @@ string do_strerror_r(int ev) {
> std::snprintf(buffer, strerror_buff_size, "Unknown error %d",
> ev);
> return string(buffer);
> } else {
> - assert(new_errno == ERANGE);
> + _LIBCPP_ASSERT(new_errno == ERANGE, "unexpected error from
> + ::strerr_r");
> // FIXME maybe? 'strerror_buff_size' is likely to exceed the
> // maximum error size so ERANGE shouldn't be returned.
> std::abort();
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5868 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170206/227786dc/attachment-0001.bin>
More information about the cfe-commits
mailing list