Skip to content

Commit 98753c6

Browse files
authored
Merge pull request #432 from libtom/no-deprecated-pragma
introduce MP_NO_DEPRECATED_PRAGMA
2 parents 57ccd9f + af376ed commit 98753c6

File tree

4 files changed

+53
-47
lines changed

4 files changed

+53
-47
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ branches:
3333
- master
3434
- develop
3535
- /^release/
36+
- /^support/
3637
- /^travis/
3738

3839
# Additional installs: Valgrind for memory tests.

appveyor.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ branches:
44
- master
55
- develop
66
- /^release/
7+
- /^support/
78
- /^travis/
89
image:
910
- Visual Studio 2019

demo/timing.c

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
#include <unistd.h>
55
#include <inttypes.h>
66

7-
#define MP_WUR
87
#include <tommath.h>
98

109
#ifdef IOWNANATHLON
@@ -26,12 +25,14 @@
2625
#define MP_TIMING_VERSION "-" MP_VERSION
2726
#endif
2827

28+
#define CHECK_OK(x) do { mp_err err; if ((err = (x)) != MP_OKAY) { fprintf(stderr, "%d: CHECK_OK(%s) failed: %s\n", __LINE__, #x, mp_error_to_string(err)); exit(EXIT_FAILURE); } }while(0)
29+
2930
static void ndraw(const mp_int *a, const char *name)
3031
{
3132
char buf[4096];
3233

3334
printf("%s: ", name);
34-
mp_to_radix(a, buf, sizeof(buf), NULL, 64);
35+
CHECK_OK(mp_to_radix(a, buf, sizeof(buf), NULL, 64));
3536
printf("%s\n", buf);
3637
}
3738

@@ -90,7 +91,7 @@ static uint64_t TIMFUNC(void)
9091
#endif
9192
}
9293

93-
#define DO2(x) x; x
94+
#define DO2(x) do { mp_err err = x; err = x; (void)err; }while(0)
9495
#define DO4(x) DO2(x); DO2(x)
9596
#define DO8(x) DO4(x); DO4(x)
9697

@@ -140,12 +141,12 @@ int main(int argc, char **argv)
140141
int n, cnt, ix, old_kara_m, old_kara_s, old_toom_m, old_toom_s;
141142
unsigned rr;
142143

143-
mp_init(&a);
144-
mp_init(&b);
145-
mp_init(&c);
146-
mp_init(&d);
147-
mp_init(&e);
148-
mp_init(&f);
144+
CHECK_OK(mp_init(&a));
145+
CHECK_OK(mp_init(&b));
146+
CHECK_OK(mp_init(&c));
147+
CHECK_OK(mp_init(&d));
148+
CHECK_OK(mp_init(&e));
149+
CHECK_OK(mp_init(&f));
149150

150151
srand(LTM_TIMING_RAND_SEED);
151152

@@ -161,14 +162,14 @@ int main(int argc, char **argv)
161162
for (m = 0; m < 2; ++m) {
162163
if (m == 0) {
163164
name = " Arnault";
164-
mp_read_radix(&a,
165-
"91xLNF3roobhzgTzoFIG6P13ZqhOVYSN60Fa7Cj2jVR1g0k89zdahO9/kAiRprpfO1VAp1aBHucLFV/qLKLFb+zonV7R2Vxp1K13ClwUXStpV0oxTNQVjwybmFb5NBEHImZ6V7P6+udRJuH8VbMEnS0H8/pSqQrg82OoQQ2fPpAk6G1hkjqoCv5s/Yr",
166-
64);
165+
CHECK_OK(mp_read_radix(&a,
166+
"91xLNF3roobhzgTzoFIG6P13ZqhOVYSN60Fa7Cj2jVR1g0k89zdahO9/kAiRprpfO1VAp1aBHucLFV/qLKLFb+zonV7R2Vxp1K13ClwUXStpV0oxTNQVjwybmFb5NBEHImZ6V7P6+udRJuH8VbMEnS0H8/pSqQrg82OoQQ2fPpAk6G1hkjqoCv5s/Yr",
167+
64));
167168
} else {
168169
name = "2^1119 + 53";
169170
mp_set(&a,1u);
170-
mp_mul_2d(&a,1119,&a);
171-
mp_add_d(&a,53,&a);
171+
CHECK_OK(mp_mul_2d(&a,1119,&a));
172+
CHECK_OK(mp_add_d(&a,53,&a));
172173
}
173174
cnt = mp_prime_rabin_miller_trials(mp_count_bits(&a));
174175
ix = -cnt;
@@ -197,8 +198,8 @@ int main(int argc, char **argv)
197198
log = FOPEN("logs/add" MP_TIMING_VERSION ".log", "w");
198199
for (cnt = 8; cnt <= 128; cnt += 8) {
199200
SLEEP;
200-
mp_rand(&a, cnt);
201-
mp_rand(&b, cnt);
201+
CHECK_OK(mp_rand(&a, cnt));
202+
CHECK_OK(mp_rand(&b, cnt));
202203
DO8(mp_add(&a, &b, &c));
203204
rr = 0u;
204205
tt = UINT64_MAX;
@@ -222,8 +223,8 @@ int main(int argc, char **argv)
222223
log = FOPEN("logs/sub" MP_TIMING_VERSION ".log", "w");
223224
for (cnt = 8; cnt <= 128; cnt += 8) {
224225
SLEEP;
225-
mp_rand(&a, cnt);
226-
mp_rand(&b, cnt);
226+
CHECK_OK(mp_rand(&a, cnt));
227+
CHECK_OK(mp_rand(&b, cnt));
227228
DO8(mp_sub(&a, &b, &c));
228229
rr = 0u;
229230
tt = UINT64_MAX;
@@ -263,8 +264,8 @@ int main(int argc, char **argv)
263264
"logs/mult_toom" MP_TIMING_VERSION ".log", "w");
264265
for (cnt = 4; cnt <= (10240 / MP_DIGIT_BIT); cnt += 2) {
265266
SLEEP;
266-
mp_rand(&a, cnt);
267-
mp_rand(&b, cnt);
267+
CHECK_OK(mp_rand(&a, cnt));
268+
CHECK_OK(mp_rand(&b, cnt));
268269
DO8(mp_mul(&a, &b, &c));
269270
rr = 0u;
270271
tt = UINT64_MAX;
@@ -287,7 +288,7 @@ int main(int argc, char **argv)
287288
"logs/sqr_toom" MP_TIMING_VERSION ".log", "w");
288289
for (cnt = 4; cnt <= (10240 / MP_DIGIT_BIT); cnt += 2) {
289290
SLEEP;
290-
mp_rand(&a, cnt);
291+
CHECK_OK(mp_rand(&a, cnt));
291292
DO8(mp_sqr(&a, &b));
292293
rr = 0u;
293294
tt = UINT64_MAX;
@@ -348,15 +349,15 @@ int main(int argc, char **argv)
348349
logd = FOPEN("logs/expt_2kl" MP_TIMING_VERSION ".log", "w");
349350
for (n = 0; primes[n] != NULL; n++) {
350351
SLEEP;
351-
mp_read_radix(&a, primes[n], 10);
352+
CHECK_OK(mp_read_radix(&a, primes[n], 10));
352353
mp_zero(&b);
353354
for (rr = 0; rr < (unsigned) mp_count_bits(&a); rr++) {
354-
mp_mul_2(&b, &b);
355+
CHECK_OK(mp_mul_2(&b, &b));
355356
b.dp[0] |= lbit();
356357
b.used += 1;
357358
}
358-
mp_sub_d(&a, 1uL, &c);
359-
mp_mod(&b, &c, &b);
359+
CHECK_OK(mp_sub_d(&a, 1uL, &c));
360+
CHECK_OK(mp_mod(&b, &c, &b));
360361
mp_set(&c, 3uL);
361362
DO8(mp_exptmod(&c, &b, &a, &d));
362363
rr = 0u;
@@ -368,10 +369,10 @@ int main(int argc, char **argv)
368369
if (tt > gg)
369370
tt = gg;
370371
} while (++rr < 10u);
371-
mp_sub_d(&a, 1uL, &e);
372-
mp_sub(&e, &b, &b);
373-
mp_exptmod(&c, &b, &a, &e); /* c^(p-1-b) mod a */
374-
mp_mulmod(&e, &d, &a, &d); /* c^b * c^(p-1-b) == c^p-1 == 1 */
372+
CHECK_OK(mp_sub_d(&a, 1uL, &e));
373+
CHECK_OK(mp_sub(&e, &b, &b));
374+
CHECK_OK(mp_exptmod(&c, &b, &a, &e)); /* c^(p-1-b) mod a */
375+
CHECK_OK(mp_mulmod(&e, &d, &a, &d)); /* c^b * c^(p-1-b) == c^p-1 == 1 */
375376
if (mp_cmp_d(&d, 1uL) != MP_EQ) {
376377
printf("Different (%d)!!!\n", mp_count_bits(&a));
377378
draw(&d);
@@ -393,12 +394,12 @@ int main(int argc, char **argv)
393394
log = FOPEN("logs/invmod" MP_TIMING_VERSION ".log", "w");
394395
for (cnt = 4; cnt <= 32; cnt += 4) {
395396
SLEEP;
396-
mp_rand(&a, cnt);
397-
mp_rand(&b, cnt);
397+
CHECK_OK(mp_rand(&a, cnt));
398+
CHECK_OK(mp_rand(&b, cnt));
398399

399400
do {
400-
mp_add_d(&b, 1uL, &b);
401-
mp_gcd(&a, &b, &c);
401+
CHECK_OK(mp_add_d(&b, 1uL, &b));
402+
CHECK_OK(mp_gcd(&a, &b, &c));
402403
} while (mp_cmp_d(&c, 1uL) != MP_EQ);
403404

404405
DO2(mp_invmod(&b, &a, &c));
@@ -411,7 +412,7 @@ int main(int argc, char **argv)
411412
if (tt > gg)
412413
tt = gg;
413414
} while (++rr < 1000u);
414-
mp_mulmod(&b, &c, &a, &d);
415+
CHECK_OK(mp_mulmod(&b, &c, &a, &d));
415416
if (mp_cmp_d(&d, 1uL) != MP_EQ) {
416417
printf("Failed to invert\n");
417418
return 0;

tommath.h

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -142,28 +142,31 @@ MP_TOOM_SQR_CUTOFF;
142142
* Most functions in libtommath return an error code.
143143
* This error code must be checked in order to prevent crashes or invalid
144144
* results.
145-
*
146-
* If you still want to avoid the error checks for quick and dirty programs
147-
* without robustness guarantees, you can `#define MP_WUR` before including
148-
* tommath.h, disabling the warnings.
149145
*/
150-
#ifndef MP_WUR
151-
# if defined(__GNUC__) && __GNUC__ >= 4
152-
# define MP_WUR __attribute__((warn_unused_result))
153-
# else
154-
# define MP_WUR
155-
# endif
146+
#if defined(__GNUC__) && __GNUC__ >= 4
147+
# define MP_WUR __attribute__((warn_unused_result))
148+
#else
149+
# define MP_WUR
156150
#endif
157151

158152
#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 405)
159153
# define MP_DEPRECATED(x) __attribute__((deprecated("replaced by " #x)))
154+
#elif defined(_MSC_VER) && _MSC_VER >= 1500
155+
# define MP_DEPRECATED(x) __declspec(deprecated("replaced by " #x))
156+
#else
157+
# define MP_DEPRECATED(x)
158+
#endif
159+
160+
#ifndef MP_NO_DEPRECATED_PRAGMA
161+
#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 301)
160162
# define PRIVATE_MP_DEPRECATED_PRAGMA(s) _Pragma(#s)
161163
# define MP_DEPRECATED_PRAGMA(s) PRIVATE_MP_DEPRECATED_PRAGMA(GCC warning s)
162164
#elif defined(_MSC_VER) && _MSC_VER >= 1500
163-
# define MP_DEPRECATED(x) __declspec(deprecated("replaced by " #x))
164165
# define MP_DEPRECATED_PRAGMA(s) __pragma(message(s))
165-
#else
166-
# define MP_DEPRECATED(s)
166+
#endif
167+
#endif
168+
169+
#ifndef MP_DEPRECATED_PRAGMA
167170
# define MP_DEPRECATED_PRAGMA(s)
168171
#endif
169172

0 commit comments

Comments
 (0)