Skip to content

Commit 196d0c6

Browse files
fsb4000memfrob
authored andcommitted
[libc++] Fix warning C4244 in std/numerics/rand/rand.dist/rand.dist.samp/rand.dist.samp.discrete/eval.pass.cpp
frederick-vs-ja noticed that microsoft/STL#2976 (comment) while we are working on updating LLVM submodule for MS STL: [...]\std\numerics\rand\rand.dist\rand.dist.samp\rand.dist.samp.discrete\eval.pass.cpp(33): error C2220: the following warning is treated as an error [...]\std\numerics\rand\rand.dist\rand.dist.samp\rand.dist.samp.discrete\eval.pass.cpp(287): note: see reference to function template instantiation 'void tests<__int64>(void)' being compiled [...]\std\numerics\rand\rand.dist\rand.dist.samp\rand.dist.samp.discrete\eval.pass.cpp(33): warning C4244: 'argument': conversion from '__int64' to 'const unsigned int', possible loss of data Differential Revision: https://reviews.llvm.org/D130963 (cherry picked from commit db0ac307c9df26d26a629552aec0a78f1b492dfd)
1 parent a3a0302 commit 196d0c6

File tree

1 file changed

+39
-26
lines changed
  • libcxx/test/std/numerics/rand/rand.dist/rand.dist.samp/rand.dist.samp.discrete

1 file changed

+39
-26
lines changed

libcxx/test/std/numerics/rand/rand.dist/rand.dist.samp/rand.dist.samp.discrete/eval.pass.cpp

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,13 @@ void tests() {
3030
G g;
3131
D d;
3232
const int N = 100;
33-
std::vector<Frequency> u(d.max()+1);
33+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
34+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
3435
for (int i = 0; i < N; ++i)
3536
{
3637
typename D::result_type v = d(g);
3738
assert(d.min() <= v && v <= d.max());
38-
u[v]++;
39+
u[static_cast<std::size_t>(v)]++;
3940
}
4041
std::vector<double> prob = d.probabilities();
4142
for (unsigned i = 0; i < u.size(); ++i)
@@ -48,12 +49,13 @@ void tests() {
4849
double p0[] = {.3};
4950
D d(p0, p0+1);
5051
const int N = 100;
51-
std::vector<Frequency> u(d.max()+1);
52+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
53+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
5254
for (int i = 0; i < N; ++i)
5355
{
5456
typename D::result_type v = d(g);
5557
assert(d.min() <= v && v <= d.max());
56-
u[v]++;
58+
u[static_cast<std::size_t>(v)]++;
5759
}
5860
std::vector<double> prob = d.probabilities();
5961
for (unsigned i = 0; i < u.size(); ++i)
@@ -66,12 +68,13 @@ void tests() {
6668
double p0[] = {.75, .25};
6769
D d(p0, p0+2);
6870
const int N = 1000000;
69-
std::vector<Frequency> u(d.max()+1);
71+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
72+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
7073
for (int i = 0; i < N; ++i)
7174
{
7275
typename D::result_type v = d(g);
7376
assert(d.min() <= v && v <= d.max());
74-
u[v]++;
77+
u[static_cast<std::size_t>(v)]++;
7578
}
7679
std::vector<double> prob = d.probabilities();
7780
for (unsigned i = 0; i < u.size(); ++i)
@@ -84,12 +87,13 @@ void tests() {
8487
double p0[] = {0, 1};
8588
D d(p0, p0+2);
8689
const int N = 1000000;
87-
std::vector<Frequency> u(d.max()+1);
90+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
91+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
8892
for (int i = 0; i < N; ++i)
8993
{
9094
typename D::result_type v = d(g);
9195
assert(d.min() <= v && v <= d.max());
92-
u[v]++;
96+
u[static_cast<std::size_t>(v)]++;
9397
}
9498
std::vector<double> prob = d.probabilities();
9599
assert((double)u[0]/N == prob[0]);
@@ -102,12 +106,13 @@ void tests() {
102106
double p0[] = {1, 0};
103107
D d(p0, p0+2);
104108
const int N = 1000000;
105-
std::vector<Frequency> u(d.max()+1);
109+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
110+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
106111
for (int i = 0; i < N; ++i)
107112
{
108113
typename D::result_type v = d(g);
109114
assert(d.min() <= v && v <= d.max());
110-
u[v]++;
115+
u[static_cast<std::size_t>(v)]++;
111116
}
112117
std::vector<double> prob = d.probabilities();
113118
assert((double)u[0]/N == prob[0]);
@@ -120,12 +125,13 @@ void tests() {
120125
double p0[] = {.3, .1, .6};
121126
D d(p0, p0+3);
122127
const int N = 10000000;
123-
std::vector<Frequency> u(d.max()+1);
128+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
129+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
124130
for (int i = 0; i < N; ++i)
125131
{
126132
typename D::result_type v = d(g);
127133
assert(d.min() <= v && v <= d.max());
128-
u[v]++;
134+
u[static_cast<std::size_t>(v)]++;
129135
}
130136
std::vector<double> prob = d.probabilities();
131137
for (unsigned i = 0; i < u.size(); ++i)
@@ -138,12 +144,13 @@ void tests() {
138144
double p0[] = {0, 25, 75};
139145
D d(p0, p0+3);
140146
const int N = 1000000;
141-
std::vector<Frequency> u(d.max()+1);
147+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
148+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
142149
for (int i = 0; i < N; ++i)
143150
{
144151
typename D::result_type v = d(g);
145152
assert(d.min() <= v && v <= d.max());
146-
u[v]++;
153+
u[static_cast<std::size_t>(v)]++;
147154
}
148155
std::vector<double> prob = d.probabilities();
149156
for (unsigned i = 0; i < u.size(); ++i)
@@ -159,12 +166,13 @@ void tests() {
159166
double p0[] = {25, 0, 75};
160167
D d(p0, p0+3);
161168
const int N = 1000000;
162-
std::vector<Frequency> u(d.max()+1);
169+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
170+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
163171
for (int i = 0; i < N; ++i)
164172
{
165173
typename D::result_type v = d(g);
166174
assert(d.min() <= v && v <= d.max());
167-
u[v]++;
175+
u[static_cast<std::size_t>(v)]++;
168176
}
169177
std::vector<double> prob = d.probabilities();
170178
for (unsigned i = 0; i < u.size(); ++i)
@@ -180,12 +188,13 @@ void tests() {
180188
double p0[] = {25, 75, 0};
181189
D d(p0, p0+3);
182190
const int N = 1000000;
183-
std::vector<Frequency> u(d.max()+1);
191+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
192+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
184193
for (int i = 0; i < N; ++i)
185194
{
186195
typename D::result_type v = d(g);
187196
assert(d.min() <= v && v <= d.max());
188-
u[v]++;
197+
u[static_cast<std::size_t>(v)]++;
189198
}
190199
std::vector<double> prob = d.probabilities();
191200
for (unsigned i = 0; i < u.size(); ++i)
@@ -201,12 +210,13 @@ void tests() {
201210
double p0[] = {0, 0, 1};
202211
D d(p0, p0+3);
203212
const int N = 100;
204-
std::vector<Frequency> u(d.max()+1);
213+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
214+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
205215
for (int i = 0; i < N; ++i)
206216
{
207217
typename D::result_type v = d(g);
208218
assert(d.min() <= v && v <= d.max());
209-
u[v]++;
219+
u[static_cast<std::size_t>(v)]++;
210220
}
211221
std::vector<double> prob = d.probabilities();
212222
for (unsigned i = 0; i < u.size(); ++i)
@@ -222,12 +232,13 @@ void tests() {
222232
double p0[] = {0, 1, 0};
223233
D d(p0, p0+3);
224234
const int N = 100;
225-
std::vector<Frequency> u(d.max()+1);
235+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
236+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
226237
for (int i = 0; i < N; ++i)
227238
{
228239
typename D::result_type v = d(g);
229240
assert(d.min() <= v && v <= d.max());
230-
u[v]++;
241+
u[static_cast<std::size_t>(v)]++;
231242
}
232243
std::vector<double> prob = d.probabilities();
233244
for (unsigned i = 0; i < u.size(); ++i)
@@ -243,12 +254,13 @@ void tests() {
243254
double p0[] = {1, 0, 0};
244255
D d(p0, p0+3);
245256
const int N = 100;
246-
std::vector<Frequency> u(d.max()+1);
257+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
258+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
247259
for (int i = 0; i < N; ++i)
248260
{
249261
typename D::result_type v = d(g);
250262
assert(d.min() <= v && v <= d.max());
251-
u[v]++;
263+
u[static_cast<std::size_t>(v)]++;
252264
}
253265
std::vector<double> prob = d.probabilities();
254266
for (unsigned i = 0; i < u.size(); ++i)
@@ -264,12 +276,13 @@ void tests() {
264276
double p0[] = {33, 0, 0, 67};
265277
D d(p0, p0+3);
266278
const int N = 1000000;
267-
std::vector<Frequency> u(d.max()+1);
279+
std::vector<Frequency> u(static_cast<std::size_t>(d.max()+1));
280+
assert(u.max_size() > static_cast<unsigned long long>(d.max()));
268281
for (int i = 0; i < N; ++i)
269282
{
270283
typename D::result_type v = d(g);
271284
assert(d.min() <= v && v <= d.max());
272-
u[v]++;
285+
u[static_cast<std::size_t>(v)]++;
273286
}
274287
std::vector<double> prob = d.probabilities();
275288
for (unsigned i = 0; i < u.size(); ++i)

0 commit comments

Comments
 (0)