Fix WIN32 build by disabling bn* calls.
[oweals/openssl.git] / crypto / bn / bn_nist.c
index abd53df6b9c906bf0e65797e7c457c275aa87f98..a5e07acd851a8d77b35f7af5418117bcbd1b6093 100644 (file)
@@ -1108,9 +1108,20 @@ int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
        /* ... and right shift */
        for (val=t_d[0],i=0; i<BN_NIST_521_TOP-1; i++)
                {
+#if 0
+               /*
+                * MSC ARM compiler [version 2013, presumably even earlier,
+                * much earlier] miscompiles this code, but not one in
+                * #else section. See RT#3541.
+                */
                tmp = val>>BN_NIST_521_RSHIFT;
                val = t_d[i+1];
                t_d[i] = (tmp | val<<BN_NIST_521_LSHIFT) & BN_MASK2;
+#else
+               t_d[i] = ( val>>BN_NIST_521_RSHIFT |
+                         (tmp=t_d[i+1])<<BN_NIST_521_LSHIFT ) & BN_MASK2;
+               val=tmp;
+#endif
                }
        t_d[i] = val>>BN_NIST_521_RSHIFT;
        /* lower 521 bits */