all: more assorted cleanups; NFCI
This commit is contained in:
@@ -603,7 +603,7 @@ TEST_CASE("ptr_invalidate_and_poison") {
|
||||
ptr_invalidate_and_poison(ip);
|
||||
assert(ip != nullptr);
|
||||
(void) ip;
|
||||
double *dp;
|
||||
double *dp; // not initialized
|
||||
ptr_invalidate_and_poison(dp);
|
||||
assert(dp != nullptr);
|
||||
(void) dp;
|
||||
|
||||
@@ -27,6 +27,22 @@
|
||||
// lots of tests (and probably quite a number of redundant tests)
|
||||
// modern compilers will optimize away much of this code
|
||||
|
||||
// libc++ hardenining
|
||||
#if defined(__clang__) && defined(__clang_major__) && (__clang_major__ + 0 >= 18)
|
||||
#if DEBUG
|
||||
#define _LIBCPP_HARDENING_MODE _LIBCPP_HARDENING_MODE_DEBUG
|
||||
#else
|
||||
#define _LIBCPP_HARDENING_MODE _LIBCPP_HARDENING_MODE_EXTENSIVE
|
||||
#endif
|
||||
#endif
|
||||
#if defined(__clang__) && defined(__clang_major__) && (__clang_major__ + 0 < 18)
|
||||
#if DEBUG
|
||||
#define _LIBCPP_ENABLE_ASSERTIONS 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "../headers.h"
|
||||
#include <vector>
|
||||
#include "../conf.h"
|
||||
|
||||
/*************************************************************************
|
||||
@@ -103,6 +119,23 @@ ACC_COMPILE_TIME_ASSERT_HEADER(!compile_time::string_gt("abc", "abz"))
|
||||
ACC_COMPILE_TIME_ASSERT_HEADER(!compile_time::string_ge("abc", "abz"))
|
||||
ACC_COMPILE_TIME_ASSERT_HEADER(compile_time::string_le("abc", "abz"))
|
||||
|
||||
/*************************************************************************
|
||||
//
|
||||
**************************************************************************/
|
||||
|
||||
TEST_CASE("libc++") {
|
||||
constexpr size_t N = 16;
|
||||
std::vector<int> v(N);
|
||||
CHECK(v.end() - v.begin() == N);
|
||||
CHECK(&v[0] == &(*(v.begin())));
|
||||
// CHECK(&v[0] + N == &(*(v.end()))); // TODO later: is this legal??
|
||||
#if defined(_LIBCPP_HARDENING_MODE_DEBUG) && \
|
||||
(_LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_DEBUG)
|
||||
CHECK_THROWS((void) &v[N]);
|
||||
#endif
|
||||
UNUSED(v);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
// UPX_CXX_DISABLE_xxx
|
||||
**************************************************************************/
|
||||
|
||||
@@ -28,6 +28,20 @@
|
||||
// doctest support code implementation
|
||||
**************************************************************************/
|
||||
|
||||
// libc++ hardenining
|
||||
#if defined(__clang__) && defined(__clang_major__) && (__clang_major__ + 0 >= 18)
|
||||
#if DEBUG
|
||||
#define _LIBCPP_HARDENING_MODE _LIBCPP_HARDENING_MODE_DEBUG
|
||||
#else
|
||||
#define _LIBCPP_HARDENING_MODE _LIBCPP_HARDENING_MODE_EXTENSIVE
|
||||
#endif
|
||||
#endif
|
||||
#if defined(__clang__) && defined(__clang_major__) && (__clang_major__ + 0 < 18)
|
||||
#if DEBUG
|
||||
#define _LIBCPP_ENABLE_ASSERTIONS 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__has_include)
|
||||
#if __has_include(<features.h>)
|
||||
#include <features.h> // for __GLIBC__
|
||||
|
||||
@@ -241,6 +241,33 @@ TEST_CASE("basic xspan usage") {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("xspan array access") {
|
||||
constexpr size_t N = 16;
|
||||
char buf[N];
|
||||
memset(buf, 0, sizeof(buf));
|
||||
XSPAN_0_VAR(char, c0, buf, sizeof(buf));
|
||||
XSPAN_P_VAR(char, cp, buf, sizeof(buf));
|
||||
XSPAN_S_VAR(char, cs, buf, sizeof(buf));
|
||||
for (size_t i = 0; i != N; ++i)
|
||||
c0[i] += 1;
|
||||
for (size_t i = 0; i != N; ++i)
|
||||
cp[i] += 1;
|
||||
for (size_t i = 0; i != N; ++i)
|
||||
cs[i] += 1;
|
||||
for (auto ptr = c0; ptr != c0 + N; ++ptr)
|
||||
*ptr += 1;
|
||||
for (auto ptr = c0 + 0; ptr < c0 + N; ++ptr)
|
||||
*ptr += 1;
|
||||
for (auto ptr = cp; ptr != cp + N; ++ptr)
|
||||
*ptr += 1;
|
||||
for (auto ptr = cp + 0; ptr < cp + N; ++ptr)
|
||||
*ptr += 1;
|
||||
for (auto ptr = cs; ptr != cs + N; ++ptr)
|
||||
*ptr += 1;
|
||||
for (auto ptr = cs + 0; ptr < cs + N; ++ptr)
|
||||
*ptr += 1;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
//
|
||||
**************************************************************************/
|
||||
|
||||
Reference in New Issue
Block a user