bn/bn_lcl.h: improve interoperability with clang and Android NDK.
authorAndy Polyakov <appro@openssl.org>
Sat, 10 Sep 2016 16:57:14 +0000 (18:57 +0200)
committerAndy Polyakov <appro@openssl.org>
Tue, 13 Sep 2016 11:35:07 +0000 (13:35 +0200)
Reviewed-by: Rich Salz <rsalz@openssl.org>
(cherry picked from commit cc2cb7bf63c62aaebd387f546a2fd673f367d9a8)

crypto/bn/bn_lcl.h

index 157dadc8724c9cf1428dc10b8894f153a94ea823..a3911b191731ddf8636139c98b49e63ab8e06251 100644 (file)
@@ -428,8 +428,8 @@ unsigned __int64 _umul128(unsigned __int64 a, unsigned __int64 b,
 #   endif
 #  elif defined(__mips) && (defined(SIXTY_FOUR_BIT) || defined(SIXTY_FOUR_BIT_LONG))
 #   if defined(__GNUC__) && __GNUC__>=2
-#    if __GNUC__>4 || (__GNUC__>=4 && __GNUC_MINOR__>=4)
-                                     /* "h" constraint is no more since 4.4 */
+#    if defined(__SIZEOF_INT128__) && __SIZEOF_INT128__==16
+      /* "h" constraint is not an option on R6 and was removed in 4.4 */
 #     define BN_UMULT_HIGH(a,b)          (((__uint128_t)(a)*(b))>>64)
 #     define BN_UMULT_LOHI(low,high,a,b) ({     \
         __uint128_t ret=(__uint128_t)(a)*(b);   \