enable -Wconversion and -Wsign-conversion on travis

* no changes to the library code
* conversion issues in the demo testsuite fixed
* add CONV_WARNINGS and enable the warnings only for clang-7 (for now)
* disable Wsystem-headers if Wconversion is enabled, to avoid warnings from the system headers
This commit is contained in:
Daniel Mendler 2019-04-05 11:37:49 +02:00
parent 6d092b85a5
commit e8f56cc4e0
No known key found for this signature in database
GPG Key ID: D88ADB2A2693CA43
4 changed files with 41 additions and 36 deletions

View File

@ -112,7 +112,7 @@ matrix:
- gcc-4.9
# clang for x86-64 architecture (64-bit longs and 64-bit pointers)
- env: BUILDOPTIONS='--with-cc=clang-7 --with-m64 --with-valgrind'
- env: CONV_WARNINGS=1 BUILDOPTIONS='--with-cc=clang-7 --with-m64 --with-valgrind'
- env: BUILDOPTIONS='--with-cc=clang-6.0 --with-m64 --with-valgrind'
addons:
apt:

View File

@ -79,7 +79,7 @@ int mtest_opponent(void)
FGETS(buf, 4095, stdin);
mp_read_radix(&b, buf, 64);
mp_mul_2d(&a, rr, &a);
mp_mul_2d(&a, (int)rr, &a);
a.sign = b.sign;
if (mp_cmp(&a, &b) != MP_EQ) {
printf("mul2d failed, rr == %u\n", rr);
@ -96,7 +96,7 @@ int mtest_opponent(void)
FGETS(buf, 4095, stdin);
mp_read_radix(&b, buf, 64);
mp_div_2d(&a, rr, &a, &e);
mp_div_2d(&a, (int)rr, &a, &e);
a.sign = b.sign;
if ((a.used == b.used) && (a.used == 0)) {
a.sign = b.sign = MP_ZPOS;
@ -128,10 +128,10 @@ int mtest_opponent(void)
/* test the sign/unsigned storage functions */
rr = mp_signed_bin_size(&c);
rr = (unsigned)mp_signed_bin_size(&c);
mp_to_signed_bin(&c, (unsigned char *) cmd);
memset(cmd + rr, rand() & 0xFFu, sizeof(cmd) - rr);
mp_read_signed_bin(&d, (unsigned char *) cmd, rr);
memset(cmd + rr, rand() & 0xFF, sizeof(cmd) - rr);
mp_read_signed_bin(&d, (unsigned char *) cmd, (int)rr);
if (mp_cmp(&c, &d) != MP_EQ) {
printf("mp_signed_bin failure!\n");
draw(&c);
@ -140,10 +140,10 @@ int mtest_opponent(void)
}
rr = mp_unsigned_bin_size(&c);
rr = (unsigned)mp_unsigned_bin_size(&c);
mp_to_unsigned_bin(&c, (unsigned char *) cmd);
memset(cmd + rr, rand() & 0xFFu, sizeof(cmd) - rr);
mp_read_unsigned_bin(&d, (unsigned char *) cmd, rr);
memset(cmd + rr, rand() & 0xFF, sizeof(cmd) - rr);
mp_read_unsigned_bin(&d, (unsigned char *) cmd, (int)rr);
if (mp_cmp_mag(&c, &d) != MP_EQ) {
printf("mp_unsigned_bin failure!\n");
draw(&c);
@ -343,7 +343,7 @@ int mtest_opponent(void)
sscanf(buf, "%d", &ix);
FGETS(buf, 4095, stdin);
mp_read_radix(&b, buf, 64);
mp_add_d(&a, ix, &c);
mp_add_d(&a, (mp_digit)ix, &c);
if (mp_cmp(&b, &c) != MP_EQ) {
printf("add_d %lu failure\n", add_d_n);
draw(&a);
@ -360,7 +360,7 @@ int mtest_opponent(void)
sscanf(buf, "%d", &ix);
FGETS(buf, 4095, stdin);
mp_read_radix(&b, buf, 64);
mp_sub_d(&a, ix, &c);
mp_sub_d(&a, (mp_digit)ix, &c);
if (mp_cmp(&b, &c) != MP_EQ) {
printf("sub_d %lu failure\n", sub_d_n);
draw(&a);

View File

@ -103,7 +103,7 @@ static int test_mp_jacobi(void)
mp_set_int(&b, jacobi[cnt].n);
/* only test positive values of a */
for (n = -5; n <= 10; ++n) {
mp_set_int(&a, abs(n));
mp_set_int(&a, (unsigned int)abs(n));
should = MP_OKAY;
if (n < 0) {
mp_neg(&a, &a);
@ -221,14 +221,14 @@ static int test_mp_complement(void)
}
for (i = 0; i < 1000; ++i) {
int l = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
mp_set_int(&a, labs(l));
long l = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
mp_set_long(&a, (unsigned long)labs(l));
if (l < 0)
mp_neg(&a, &a);
mp_complement(&a, &b);
l = ~l;
mp_set_int(&c, labs(l));
mp_set_long(&c, (unsigned long)labs(l));
if (l < 0)
mp_neg(&c, &c);
@ -255,16 +255,17 @@ static int test_mp_tc_div_2d(void)
}
for (i = 0; i < 1000; ++i) {
int l, em;
long l;
int em;
l = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
mp_set_int(&a, labs(l));
mp_set_long(&a, (unsigned long)labs(l));
if (l < 0)
mp_neg(&a, &a);
em = rand() % 32;
mp_set_int(&d, labs(l >> em));
mp_set_long(&d, (unsigned long)labs(l >> em));
if ((l >> em) < 0)
mp_neg(&d, &d);
@ -296,16 +297,16 @@ static int test_mp_tc_xor(void)
int l, em;
l = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
mp_set_int(&a, labs(l));
mp_set_int(&a, (unsigned long)labs(l));
if (l < 0)
mp_neg(&a, &a);
em = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
mp_set_int(&b, labs(em));
mp_set_int(&b, (unsigned long)labs(em));
if (em < 0)
mp_neg(&b, &b);
mp_set_int(&d, labs(l ^ em));
mp_set_int(&d, (unsigned long)labs(l ^ em));
if ((l ^ em) < 0)
mp_neg(&d, &d);
@ -334,19 +335,19 @@ static int test_mp_tc_or(void)
}
for (i = 0; i < 1000; ++i) {
int l, em;
long l, em;
l = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
mp_set_int(&a, labs(l));
mp_set_long(&a, (unsigned long)labs(l));
if (l < 0)
mp_neg(&a, &a);
em = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
mp_set_int(&b, labs(em));
mp_set_long(&b, (unsigned long)labs(em));
if (em < 0)
mp_neg(&b, &b);
mp_set_int(&d, labs(l | em));
mp_set_long(&d, (unsigned long)labs(l | em));
if ((l | em) < 0)
mp_neg(&d, &d);
@ -374,19 +375,19 @@ static int test_mp_tc_and(void)
}
for (i = 0; i < 1000; ++i) {
int l, em;
long l, em;
l = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
mp_set_int(&a, labs(l));
mp_set_long(&a, (unsigned long)labs(l));
if (l < 0)
mp_neg(&a, &a);
em = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
mp_set_int(&b, labs(em));
mp_set_long(&b, (unsigned long)labs(em));
if (em < 0)
mp_neg(&b, &b);
mp_set_int(&d, labs(l & em));
mp_set_long(&d, (unsigned long)labs(l & em));
if ((l & em) < 0)
mp_neg(&d, &d);
@ -554,9 +555,9 @@ static int test_mp_get_long(void)
}
for (i = 0; i < ((int)(sizeof(unsigned long)*CHAR_BIT) - 1); ++i) {
t = (1ULL << (i+1)) - 1;
t = (1UL << (i+1)) - 1;
if (!t)
t = -1;
t = ~0UL;
printf(" t = 0x%lx i = %d\r", t, i);
do {
if (mp_set_long(&a, t) != MP_OKAY) {
@ -592,7 +593,7 @@ static int test_mp_get_long_long(void)
for (i = 0; i < ((int)(sizeof(unsigned long long)*CHAR_BIT) - 1); ++i) {
r = (1ULL << (i+1)) - 1;
if (!r)
r = -1;
r = ~0ULL;
printf(" r = 0x%llx i = %d\r", r, i);
do {
if (mp_set_long_long(&a, r) != MP_OKAY) {
@ -1345,7 +1346,7 @@ static int test_mp_ilogb(void)
}
/* radix_size includes the memory needed for '\0', too*/
size -= 2;
if (mp_cmp_d(&lb, size) != MP_EQ) {
if (mp_cmp_d(&lb, (mp_digit)size) != MP_EQ) {
goto LBL_ERR;
}
}
@ -1365,7 +1366,7 @@ static int test_mp_ilogb(void)
goto LBL_ERR;
}
size -= 2;
if (mp_cmp_d(&lb, size) != MP_EQ) {
if (mp_cmp_d(&lb, (mp_digit)size) != MP_EQ) {
goto LBL_ERR;
}
}

View File

@ -51,10 +51,14 @@ CFLAGS += -I./ -Wall -Wsign-compare -Wextra -Wshadow
ifndef NO_ADDTL_WARNINGS
# additional warnings
CFLAGS += -Wsystem-headers
CFLAGS += -Wdeclaration-after-statement -Wbad-function-cast -Wcast-align
CFLAGS += -Wstrict-prototypes -Wpointer-arith
#CFLAGS += -Wconversion -Wsign-conversion
endif
ifdef CONV_WARNINGS
CFLAGS += -Wconversion -Wsign-conversion
else
CFLAGS += -Wsystem-headers
endif
ifdef COMPILE_DEBUG