From: Louis Dionne Date: Thu, 6 Dec 2018 18:24:39 +0000 (+0000) Subject: [libcxx] Add checks for unique value of array.begin() and array.end() X-Git-Tag: llvmorg-8.0.0-rc1~2698 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7125b08d0805898773e8721d685b86ab8f45d500;p=platform%2Fupstream%2Fllvm.git [libcxx] Add checks for unique value of array.begin() and array.end() The standard section [array.zero] requires the return value of begin() and end() methods of a zero-sized array to be unique. Eric Fiselier clarifies: "That unique value cannot be null, and must be properly aligned". This patch adds checks for the first part of this clarification: unique value returned by these methods cannot be null. Reviewed as https://reviews.llvm.org/D55366. Thanks to Andrey Maksimov for the patch. llvm-svn: 348509 --- diff --git a/libcxx/test/std/containers/sequences/array/begin.pass.cpp b/libcxx/test/std/containers/sequences/array/begin.pass.cpp index 1c76472..37c6b5e 100644 --- a/libcxx/test/std/containers/sequences/array/begin.pass.cpp +++ b/libcxx/test/std/containers/sequences/array/begin.pass.cpp @@ -14,6 +14,8 @@ #include #include +#include "test_macros.h" + // std::array is explicitly allowed to be initialized with A a = { init-list };. // Disable the missing braces warning for this reason. #include "disable_missing_braces_warning.h" @@ -40,6 +42,11 @@ int main() typedef NoDefault T; typedef std::array C; C c = {}; - assert(c.begin() == c.end()); + C::iterator ib, ie; + ib = c.begin(); + ie = c.end(); + assert(ib == ie); + LIBCPP_ASSERT(ib != nullptr); + LIBCPP_ASSERT(ie != nullptr); } }