Don't inline mbedtls_mpi_safe_cond_assign on MSVC/ARM64 to avoid a compiler bug.

Signed-off-by: Tautvydas Žilys <tautvydas.zilys@gmail.com>
This commit is contained in:
Tautvydas Žilys 2022-01-26 15:33:27 -08:00
parent 98dcb4c024
commit ea4af4d345

View file

@ -533,6 +533,13 @@ cleanup:
* about whether the assignment was made or not. * about whether the assignment was made or not.
* (Leaking information about the respective sizes of X and Y is ok however.) * (Leaking information about the respective sizes of X and Y is ok however.)
*/ */
#if defined(_MSC_VER) && defined(_M_ARM64)
/*
* MSVC miscompiles this function if it's inlined. See:
* https://developercommunity.visualstudio.com/t/c-compiler-miscompiles-part-of-mbedtls-library-on/1646989
*/
__declspec(noinline)
#endif
int mbedtls_mpi_safe_cond_assign( mbedtls_mpi *X, int mbedtls_mpi_safe_cond_assign( mbedtls_mpi *X,
const mbedtls_mpi *Y, const mbedtls_mpi *Y,
unsigned char assign ) unsigned char assign )