Skip to content

Commit bcda8fc

Browse files
committed
simplifications: remove unnecessary optimization
* these double checks are not necessary * the compiler will move the early return outside of the called function, basically the functions is partially inlined * however lto/amalgamation needed for the optimization
1 parent 795cd20 commit bcda8fc

22 files changed

+64
-111
lines changed

mp_abs.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@
99
*/
1010
mp_err mp_abs(const mp_int *a, mp_int *b)
1111
{
12+
mp_err err;
13+
1214
/* copy a to b */
13-
if (a != b) {
14-
mp_err err;
15-
if ((err = mp_copy(a, b)) != MP_OKAY) {
16-
return err;
17-
}
15+
if ((err = mp_copy(a, b)) != MP_OKAY) {
16+
return err;
1817
}
1918

2019
/* force the sign of b to positive */

mp_add_d.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
/* single digit addition */
77
mp_err mp_add_d(const mp_int *a, mp_digit b, mp_int *c)
88
{
9+
mp_err err;
910
int oldused;
1011

1112
/* fast path for a == c */
@@ -24,16 +25,12 @@ mp_err mp_add_d(const mp_int *a, mp_digit b, mp_int *c)
2425
}
2526

2627
/* grow c as required */
27-
if (c->alloc < (a->used + 1)) {
28-
mp_err err;
29-
if ((err = mp_grow(c, a->used + 1)) != MP_OKAY) {
30-
return err;
31-
}
28+
if ((err = mp_grow(c, a->used + 1)) != MP_OKAY) {
29+
return err;
3230
}
3331

3432
/* if a is negative and |a| >= b, call c = |a| - b */
3533
if ((a->sign == MP_NEG) && ((a->used > 1) || (a->dp[0] >= b))) {
36-
mp_err err;
3734
mp_int a_ = *a;
3835
/* temporarily fix sign of a */
3936
a_.sign = MP_ZPOS;

mp_and.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@ mp_err mp_and(const mp_int *a, const mp_int *b, mp_int *c)
1111
mp_digit ac = 1, bc = 1, cc = 1;
1212
mp_sign csign = ((a->sign == MP_NEG) && (b->sign == MP_NEG)) ? MP_NEG : MP_ZPOS;
1313

14-
if (c->alloc < used) {
15-
if ((err = mp_grow(c, used)) != MP_OKAY) {
16-
return err;
17-
}
14+
if ((err = mp_grow(c, used)) != MP_OKAY) {
15+
return err;
1816
}
1917

2018
for (i = 0; i < used; i++) {

mp_copy.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,16 @@
66
/* copy, b = a */
77
mp_err mp_copy(const mp_int *a, mp_int *b)
88
{
9+
mp_err err;
10+
911
/* if dst == src do nothing */
1012
if (a == b) {
1113
return MP_OKAY;
1214
}
1315

1416
/* grow dest */
15-
if (b->alloc < a->used) {
16-
mp_err err;
17-
if ((err = mp_grow(b, a->used)) != MP_OKAY) {
18-
return err;
19-
}
17+
if ((err = mp_grow(b, a->used)) != MP_OKAY) {
18+
return err;
2019
}
2120

2221
/* copy everything over and zero high digits */

mp_div_2.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,12 @@
66
/* b = a/2 */
77
mp_err mp_div_2(const mp_int *a, mp_int *b)
88
{
9+
mp_err err;
910
int x, oldused;
1011
mp_digit r;
1112

12-
if (b->alloc < a->used) {
13-
mp_err err;
14-
if ((err = mp_grow(b, a->used)) != MP_OKAY) {
15-
return err;
16-
}
13+
if ((err = mp_grow(b, a->used)) != MP_OKAY) {
14+
return err;
1715
}
1816

1917
oldused = b->used;

mp_dr_reduce.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,20 @@
1919
*/
2020
mp_err mp_dr_reduce(mp_int *x, const mp_int *n, mp_digit k)
2121
{
22+
mp_err err;
23+
2224
/* m = digits in modulus */
2325
int m = n->used;
2426

2527
/* ensure that "x" has at least 2m digits */
26-
if (x->alloc < (m + m)) {
27-
mp_err err;
28-
if ((err = mp_grow(x, m + m)) != MP_OKAY) {
29-
return err;
30-
}
28+
if ((err = mp_grow(x, m + m)) != MP_OKAY) {
29+
return err;
3130
}
3231

3332
/* top of loop, this is where the code resumes if
3433
* another reduction pass is required.
3534
*/
3635
for (;;) {
37-
mp_err err;
3836
int i;
3937
mp_digit mu = 0;
4038

mp_from_ubin.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@ mp_err mp_from_ubin(mp_int *a, const uint8_t *buf, size_t size)
99
mp_err err;
1010

1111
/* make sure there are at least two digits */
12-
if (a->alloc < 2) {
13-
if ((err = mp_grow(a, 2)) != MP_OKAY) {
14-
return err;
15-
}
12+
if ((err = mp_grow(a, 2)) != MP_OKAY) {
13+
return err;
1614
}
1715

1816
/* zero the int */

mp_lshd.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
/* shift left a certain amount of digits */
77
mp_err mp_lshd(mp_int *a, int b)
88
{
9+
mp_err err;
910
int x;
1011

1112
/* if its less than zero return */
@@ -18,11 +19,8 @@ mp_err mp_lshd(mp_int *a, int b)
1819
}
1920

2021
/* grow to fit the new digits */
21-
if (a->alloc < (a->used + b)) {
22-
mp_err err;
23-
if ((err = mp_grow(a, a->used + b)) != MP_OKAY) {
24-
return err;
25-
}
22+
if ((err = mp_grow(a, a->used + b)) != MP_OKAY) {
23+
return err;
2624
}
2725

2826
/* increment the used by the shift amount then copy upwards */

mp_montgomery_reduce.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
/* computes xR**-1 == x (mod N) via Montgomery Reduction */
77
mp_err mp_montgomery_reduce(mp_int *x, const mp_int *n, mp_digit rho)
88
{
9+
mp_err err;
910
int ix, digs;
1011

1112
/* can the fast reduction [comba] method be used?
@@ -22,11 +23,8 @@ mp_err mp_montgomery_reduce(mp_int *x, const mp_int *n, mp_digit rho)
2223
}
2324

2425
/* grow the input as required */
25-
if (x->alloc < digs) {
26-
mp_err err;
27-
if ((err = mp_grow(x, digs)) != MP_OKAY) {
28-
return err;
29-
}
26+
if ((err = mp_grow(x, digs)) != MP_OKAY) {
27+
return err;
3028
}
3129
x->used = digs;
3230

mp_mul_2.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,13 @@
66
/* b = a*2 */
77
mp_err mp_mul_2(const mp_int *a, mp_int *b)
88
{
9+
mp_err err;
910
int x, oldused;
1011
mp_digit r;
1112

1213
/* grow to accomodate result */
13-
if (b->alloc < (a->used + 1)) {
14-
mp_err err;
15-
if ((err = mp_grow(b, a->used + 1)) != MP_OKAY) {
16-
return err;
17-
}
14+
if ((err = mp_grow(b, a->used + 1)) != MP_OKAY) {
15+
return err;
1816
}
1917

2018
oldused = b->used;

mp_mul_2d.c

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,22 @@
66
/* shift left by a certain bit count */
77
mp_err mp_mul_2d(const mp_int *a, int b, mp_int *c)
88
{
9+
mp_err err;
10+
911
if (b < 0) {
1012
return MP_VAL;
1113
}
1214

13-
if (a != c) {
14-
mp_err err;
15-
if ((err = mp_copy(a, c)) != MP_OKAY) {
16-
return err;
17-
}
15+
if ((err = mp_copy(a, c)) != MP_OKAY) {
16+
return err;
1817
}
1918

20-
if (c->alloc < (c->used + (b / MP_DIGIT_BIT) + 1)) {
21-
mp_err err;
22-
if ((err = mp_grow(c, c->used + (b / MP_DIGIT_BIT) + 1)) != MP_OKAY) {
23-
return err;
24-
}
19+
if ((err = mp_grow(c, c->used + (b / MP_DIGIT_BIT) + 1)) != MP_OKAY) {
20+
return err;
2521
}
2622

2723
/* shift by as many digits in the bit count */
2824
if (b >= MP_DIGIT_BIT) {
29-
mp_err err;
3025
if ((err = mp_lshd(c, b / MP_DIGIT_BIT)) != MP_OKAY) {
3126
return err;
3227
}

mp_mul_d.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@ mp_err mp_mul_d(const mp_int *a, mp_digit b, mp_int *c)
1111
int ix, oldused;
1212

1313
/* make sure c is big enough to hold a*b */
14-
if (c->alloc < (a->used + 1)) {
15-
if ((err = mp_grow(c, a->used + 1)) != MP_OKAY) {
16-
return err;
17-
}
14+
if ((err = mp_grow(c, a->used + 1)) != MP_OKAY) {
15+
return err;
1816
}
1917

2018
/* get the original destinations used count */

mp_neg.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@
66
/* b = -a */
77
mp_err mp_neg(const mp_int *a, mp_int *b)
88
{
9-
if (a != b) {
10-
mp_err err;
11-
if ((err = mp_copy(a, b)) != MP_OKAY) {
12-
return err;
13-
}
9+
mp_err err;
10+
if ((err = mp_copy(a, b)) != MP_OKAY) {
11+
return err;
1412
}
1513

1614
b->sign = mp_iszero(b) || b->sign == MP_NEG ? MP_ZPOS : MP_NEG;

mp_or.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@ mp_err mp_or(const mp_int *a, const mp_int *b, mp_int *c)
1111
mp_digit ac = 1, bc = 1, cc = 1;
1212
mp_sign csign = ((a->sign == MP_NEG) || (b->sign == MP_NEG)) ? MP_NEG : MP_ZPOS;
1313

14-
if (c->alloc < used) {
15-
if ((err = mp_grow(c, used)) != MP_OKAY) {
16-
return err;
17-
}
14+
if ((err = mp_grow(c, used)) != MP_OKAY) {
15+
return err;
1816
}
1917

2018
for (i = 0; i < used; i++) {

mp_sub_d.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
/* single digit subtraction */
77
mp_err mp_sub_d(const mp_int *a, mp_digit b, mp_int *c)
88
{
9+
mp_err err;
910
int oldused;
1011

1112
/* fast path for a == c */
@@ -23,18 +24,14 @@ mp_err mp_sub_d(const mp_int *a, mp_digit b, mp_int *c)
2324
}
2425

2526
/* grow c as required */
26-
if (c->alloc < (a->used + 1)) {
27-
mp_err err;
28-
if ((err = mp_grow(c, a->used + 1)) != MP_OKAY) {
29-
return err;
30-
}
27+
if ((err = mp_grow(c, a->used + 1)) != MP_OKAY) {
28+
return err;
3129
}
3230

3331
/* if a is negative just do an unsigned
3432
* addition [with fudged signs]
3533
*/
3634
if (a->sign == MP_NEG) {
37-
mp_err err;
3835
mp_int a_ = *a;
3936
a_.sign = MP_ZPOS;
4037
err = mp_add_d(&a_, b, c);

mp_xor.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@ mp_err mp_xor(const mp_int *a, const mp_int *b, mp_int *c)
1111
mp_digit ac = 1, bc = 1, cc = 1;
1212
mp_sign csign = (a->sign != b->sign) ? MP_NEG : MP_ZPOS;
1313

14-
if (c->alloc < used) {
15-
if ((err = mp_grow(c, used)) != MP_OKAY) {
16-
return err;
17-
}
14+
if ((err = mp_grow(c, used)) != MP_OKAY) {
15+
return err;
1816
}
1917

2018
for (i = 0; i < used; i++) {

s_mp_add.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ mp_err s_mp_add(const mp_int *a, const mp_int *b, mp_int *c)
88
{
99
int oldused, min, max, i;
1010
mp_digit u;
11+
mp_err err;
1112

1213
/* find sizes, we let |a| <= |b| which means we have to sort
1314
* them. "x" will point to the input with the most digits
@@ -20,11 +21,8 @@ mp_err s_mp_add(const mp_int *a, const mp_int *b, mp_int *c)
2021
max = a->used;
2122

2223
/* init result */
23-
if (c->alloc < (max + 1)) {
24-
mp_err err;
25-
if ((err = mp_grow(c, max + 1)) != MP_OKAY) {
26-
return err;
27-
}
24+
if ((err = mp_grow(c, max + 1)) != MP_OKAY) {
25+
return err;
2826
}
2927

3028
/* get old used digit count and set new one */

s_mp_montgomery_reduce_fast.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,8 @@ mp_err s_mp_montgomery_reduce_fast(mp_int *x, const mp_int *n, mp_digit rho)
2525
oldused = x->used;
2626

2727
/* grow a as required */
28-
if (x->alloc < (n->used + 1)) {
29-
if ((err = mp_grow(x, n->used + 1)) != MP_OKAY) {
30-
return err;
31-
}
28+
if ((err = mp_grow(x, n->used + 1)) != MP_OKAY) {
29+
return err;
3230
}
3331

3432
/* first we have to get the digits of the input into

s_mp_mul_digs_fast.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,8 @@ mp_err s_mp_mul_digs_fast(const mp_int *a, const mp_int *b, mp_int *c, int digs)
2727
mp_word _W;
2828

2929
/* grow the destination as required */
30-
if (c->alloc < digs) {
31-
if ((err = mp_grow(c, digs)) != MP_OKAY) {
32-
return err;
33-
}
30+
if ((err = mp_grow(c, digs)) != MP_OKAY) {
31+
return err;
3432
}
3533

3634
/* number of output digits to produce */

s_mp_mul_high_digs_fast.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@ mp_err s_mp_mul_high_digs_fast(const mp_int *a, const mp_int *b, mp_int *c, int
2121

2222
/* grow the destination as required */
2323
pa = a->used + b->used;
24-
if (c->alloc < pa) {
25-
if ((err = mp_grow(c, pa)) != MP_OKAY) {
26-
return err;
27-
}
24+
if ((err = mp_grow(c, pa)) != MP_OKAY) {
25+
return err;
2826
}
2927

3028
/* number of output digits to produce */

s_mp_sqr_fast.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,12 @@ mp_err s_mp_sqr_fast(const mp_int *a, mp_int *b)
1818
int oldused, pa, ix;
1919
mp_digit W[MP_WARRAY];
2020
mp_word W1;
21+
mp_err err;
2122

2223
/* grow the destination as required */
2324
pa = a->used + a->used;
24-
if (b->alloc < pa) {
25-
mp_err err;
26-
if ((err = mp_grow(b, pa)) != MP_OKAY) {
27-
return err;
28-
}
25+
if ((err = mp_grow(b, pa)) != MP_OKAY) {
26+
return err;
2927
}
3028

3129
/* number of output digits to produce */

0 commit comments

Comments
 (0)