STL_MSFT created this revision. STL_MSFT added reviewers: EricWF, mclow.lists. STL_MSFT added a subscriber: cfe-commits.
[libcxx] [test] Fix MSVC warning C4244 "conversion from 'X' to 'Y', possible loss of data", part 6/7. test/std/algorithms/alg.modifying.operations/alg.random.shuffle/random_shuffle_rand.pass.cpp (Affects 64-bit architectures.) Include <cstddef> so we can take/return std::ptrdiff_t (instead of int) in random_shuffle()'s RNG. (C++14 D.12 [depr.alg.random.shuffle]/2 says that difference_type is used, and we're shuffling a plain array.) test/std/algorithms/alg.sorting/alg.sort/sort/sort.pass.cpp test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort.pass.cpp (Affects 64-bit architectures.) Include <iterator> because we're already using iterator_traits. Then, store the result of subtracting two RanIts as difference_type instead of long (which truncates on LLP64 architectures like MSVC x64). test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_flist.pass.cpp test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_one.pass.cpp (Affects 64-bit architectures.) Include <cstddef> so we can store the result of subtracting two pointers as std::ptrdiff_t (instead of int). test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp (Affects 32-bit architectures.) Sometimes, size_t is too small. That's the case here, where tellg() returns pos_type (N4606 27.7.2.3 [istream.unformatted]/39). Implementations can have 64-bit pos_type (to handle large files) even when they have 32-bit size_t. https://reviews.llvm.org/D27543 Files: test/std/algorithms/alg.modifying.operations/alg.random.shuffle/random_shuffle_rand.pass.cpp test/std/algorithms/alg.sorting/alg.sort/sort/sort.pass.cpp test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort.pass.cpp test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_flist.pass.cpp test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_one.pass.cpp test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp
Index: test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp =================================================================== --- test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp +++ test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp @@ -27,8 +27,8 @@ std::istringstream is(s); const unsigned int ignoreLen=10; - size_t a=is.tellg(); + std::istringstream::pos_type a=is.tellg(); is.ignore(ignoreLen); - size_t b=is.tellg(); + std::istringstream::pos_type b=is.tellg(); assert((b-a)==ignoreLen); } Index: test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_one.pass.cpp =================================================================== --- test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_one.pass.cpp +++ test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_one.pass.cpp @@ -14,15 +14,16 @@ #include <forward_list> #include <cassert> #include <iterator> +#include <cstddef> #include "test_macros.h" #include "min_allocator.h" typedef int T; const T t1[] = {0, 1, 2, 3, 4, 5, 6, 7}; const T t2[] = {10, 11, 12}; -const int size_t1 = std::end(t1) - std::begin(t1); -const int size_t2 = std::end(t2) - std::begin(t2); +const std::ptrdiff_t size_t1 = std::end(t1) - std::begin(t1); +const std::ptrdiff_t size_t2 = std::end(t2) - std::begin(t2); template <class C> void Index: test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_flist.pass.cpp =================================================================== --- test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_flist.pass.cpp +++ test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_flist.pass.cpp @@ -14,14 +14,15 @@ #include <forward_list> #include <cassert> #include <iterator> +#include <cstddef> #include "min_allocator.h" typedef int T; const T t1[] = {0, 1, 2, 3, 4, 5, 6, 7}; const T t2[] = {10, 11, 12, 13, 14, 15}; -const int size_t1 = std::end(t1) - std::begin(t1); -const int size_t2 = std::end(t2) - std::begin(t2); +const std::ptrdiff_t size_t1 = std::end(t1) - std::begin(t1); +const std::ptrdiff_t size_t2 = std::end(t2) - std::begin(t2); template <class C> void Index: test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort.pass.cpp +++ test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort.pass.cpp @@ -16,16 +16,19 @@ // stable_sort(Iter first, Iter last); #include <algorithm> +#include <iterator> #include <cassert> template <class RI> void test_sort_helper(RI f, RI l) { typedef typename std::iterator_traits<RI>::value_type value_type; + typedef typename std::iterator_traits<RI>::difference_type difference_type; + if (f != l) { - long len = l - f; + difference_type len = l - f; value_type* save(new value_type[len]); do { Index: test/std/algorithms/alg.sorting/alg.sort/sort/sort.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.sort/sort/sort.pass.cpp +++ test/std/algorithms/alg.sorting/alg.sort/sort/sort.pass.cpp @@ -16,16 +16,19 @@ // sort(Iter first, Iter last); #include <algorithm> +#include <iterator> #include <cassert> template <class RI> void test_sort_helper(RI f, RI l) { typedef typename std::iterator_traits<RI>::value_type value_type; + typedef typename std::iterator_traits<RI>::difference_type difference_type; + if (f != l) { - long len = l - f; + difference_type len = l - f; value_type* save(new value_type[len]); do { Index: test/std/algorithms/alg.modifying.operations/alg.random.shuffle/random_shuffle_rand.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.random.shuffle/random_shuffle_rand.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.random.shuffle/random_shuffle_rand.pass.cpp @@ -17,12 +17,13 @@ #include <algorithm> #include <cassert> +#include <cstddef> #include "test_macros.h" struct gen { - int operator()(int n) + std::ptrdiff_t operator()(std::ptrdiff_t n) { return n-1; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits