Re: [libcxx] r296840 - Work around test failure on 32 bit OS X

2017-03-03 Thread Adrian Prantl via cfe-commits
Does that mean there is a bug in libcxx that should be documented somewhere?

-- adrian
> On Mar 2, 2017, at 3:18 PM, Eric Fiselier via cfe-commits 
>  wrote:
> 
> Author: ericwf
> Date: Thu Mar  2 17:18:40 2017
> New Revision: 296840
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=296840=rev
> Log:
> Work around test failure on 32 bit OS X
> 
> Modified:
>
> libcxx/trunk/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp
> 
> Modified: 
> libcxx/trunk/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp?rev=296840=296839=296840=diff
> ==
> --- 
> libcxx/trunk/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp
>  (original)
> +++ 
> libcxx/trunk/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp
>  Thu Mar  2 17:18:40 2017
> @@ -29,16 +29,22 @@ test(S s, typename S::size_type pos1, ty
>  SV sv, typename S::size_type pos2, typename S::size_type n2,
>  S expected)
> {
> +typedef typename S::size_type SizeT;
> static_assert((!std::is_same::value), "");
> -const typename S::size_type old_size = s.size();
> +
> +// String and string_view may not always share the same size type,
> +// but both types should have the same size (ex. int vs long)
> +static_assert(sizeof(SizeT) == sizeof(typename SV::size_type), "");
> +
> +const SizeT old_size = s.size();
> S s0 = s;
> if (pos1 <= old_size && pos2 <= sv.size())
> {
> s.replace(pos1, n1, sv, pos2, n2);
> LIBCPP_ASSERT(s.__invariants());
> assert(s == expected);
> -typename S::size_type xlen = std::min(n1, old_size - pos1);
> -typename S::size_type rlen = std::min(n2, sv.size() - pos2);
> +SizeT xlen = std::min(n1, old_size - pos1);
> +SizeT rlen = std::min(n2, sv.size() - pos2);
> assert(s.size() == old_size - xlen + rlen);
> }
> #ifndef TEST_HAS_NO_EXCEPTIONS
> @@ -64,16 +70,17 @@ test_npos(S s, typename S::size_type pos
>   SV sv, typename S::size_type pos2,
>   S expected)
> {
> +typedef typename S::size_type SizeT;
> static_assert((!std::is_same::value), "");
> -const typename S::size_type old_size = s.size();
> +const SizeT old_size = s.size();
> S s0 = s;
> if (pos1 <= old_size && pos2 <= sv.size())
> {
> s.replace(pos1, n1, sv, pos2);
> LIBCPP_ASSERT(s.__invariants());
> assert(s == expected);
> -typename S::size_type xlen = std::min(n1, old_size - pos1);
> -typename S::size_type rlen = std::min(S::npos, sv.size() - pos2);
> +SizeT xlen = std::min(n1, old_size - pos1);
> +SizeT rlen = std::min(S::npos, sv.size() - pos2);
> assert(s.size() == old_size - xlen + rlen);
> }
> #ifndef TEST_HAS_NO_EXCEPTIONS
> 
> 
> ___
> 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


[libcxx] r296840 - Work around test failure on 32 bit OS X

2017-03-02 Thread Eric Fiselier via cfe-commits
Author: ericwf
Date: Thu Mar  2 17:18:40 2017
New Revision: 296840

URL: http://llvm.org/viewvc/llvm-project?rev=296840=rev
Log:
Work around test failure on 32 bit OS X

Modified:

libcxx/trunk/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp

Modified: 
libcxx/trunk/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp?rev=296840=296839=296840=diff
==
--- 
libcxx/trunk/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp
 (original)
+++ 
libcxx/trunk/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp
 Thu Mar  2 17:18:40 2017
@@ -29,16 +29,22 @@ test(S s, typename S::size_type pos1, ty
  SV sv, typename S::size_type pos2, typename S::size_type n2,
  S expected)
 {
+typedef typename S::size_type SizeT;
 static_assert((!std::is_same::value), "");
-const typename S::size_type old_size = s.size();
+
+// String and string_view may not always share the same size type,
+// but both types should have the same size (ex. int vs long)
+static_assert(sizeof(SizeT) == sizeof(typename SV::size_type), "");
+
+const SizeT old_size = s.size();
 S s0 = s;
 if (pos1 <= old_size && pos2 <= sv.size())
 {
 s.replace(pos1, n1, sv, pos2, n2);
 LIBCPP_ASSERT(s.__invariants());
 assert(s == expected);
-typename S::size_type xlen = std::min(n1, old_size - pos1);
-typename S::size_type rlen = std::min(n2, sv.size() - pos2);
+SizeT xlen = std::min(n1, old_size - pos1);
+SizeT rlen = std::min(n2, sv.size() - pos2);
 assert(s.size() == old_size - xlen + rlen);
 }
 #ifndef TEST_HAS_NO_EXCEPTIONS
@@ -64,16 +70,17 @@ test_npos(S s, typename S::size_type pos
   SV sv, typename S::size_type pos2,
   S expected)
 {
+typedef typename S::size_type SizeT;
 static_assert((!std::is_same::value), "");
-const typename S::size_type old_size = s.size();
+const SizeT old_size = s.size();
 S s0 = s;
 if (pos1 <= old_size && pos2 <= sv.size())
 {
 s.replace(pos1, n1, sv, pos2);
 LIBCPP_ASSERT(s.__invariants());
 assert(s == expected);
-typename S::size_type xlen = std::min(n1, old_size - pos1);
-typename S::size_type rlen = std::min(S::npos, sv.size() - pos2);
+SizeT xlen = std::min(n1, old_size - pos1);
+SizeT rlen = std::min(S::npos, sv.size() - pos2);
 assert(s.size() == old_size - xlen + rlen);
 }
 #ifndef TEST_HAS_NO_EXCEPTIONS


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits