On 25/10/16 08:20 -0400, Ed Smith-Rowland wrote:
+       explicit
+       param_type(_RealType __radius = _RealType(1))
+       : _M_radius(__radius)
+       {
+         _GLIBCXX_DEBUG_ASSERT(_M_radius > _RealType(0));

Nowadays we're able to do cheaper assertions when _GLIBCXX_ASSERTIONS
is defined, without the full debug mode (i.e. _GLIBCXX_DEBUG).

The macro above is only active for the full debug mode, but it looks
like a cheap check, should it use __glibcxx_assert instead?

It looks like we're not consistent about which one to use in
<ext/random>, which is probably my fault. Expensive checks like using
std::distance on forward iterators should use _GLIBCXX_DEBUG_ASSERT
but some of them look like they could use __glibcxx_assert.


Index: testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc
===================================================================
--- testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc     
(nonexistent)
+++ testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc     
(working copy)
@@ -0,0 +1,43 @@
+// { dg-options "-std=gnu++11" }

In all the new tests please replace this dg-options directive with:

 { dg-do run { target cxx11 } }

so it can be tested for C++14 and C++17 too.


+// { dg-require-cstdint "" }
+//
+// Copyright (C) 2014 Free Software Foundation, Inc.

And update the dates to 2014-2016.


OK for trunk with those changes to the tests. Whether to use
DEBUG_ASSERT/assert is your call.

Thanks.

Reply via email to