[flang] Disable 80-bit extended precision if on MSVC (flang-compiler/f18#1003)
authorIsuru Fernando <isuruf@gmail.com>
Thu, 20 Feb 2020 19:33:43 +0000 (13:33 -0600)
committerGitHub <noreply@github.com>
Thu, 20 Feb 2020 19:33:43 +0000 (11:33 -0800)
Original-commit: flang-compiler/f18@2c1fc63758eac43eb4d2fd4fdf1e7b0e63d52f70
Reviewed-on: https://github.com/flang-compiler/f18/pull/1003

flang/include/flang/decimal/decimal.h
flang/lib/decimal/binary-to-decimal.cpp
flang/lib/decimal/decimal-to-binary.cpp

index c9aad16..05ed006 100644 (file)
@@ -130,7 +130,7 @@ struct NS(ConversionToDecimalResult)
 struct NS(ConversionToDecimalResult)
     ConvertDoubleToDecimal(char *, size_t, enum NS(DecimalConversionFlags),
         int digits, enum NS(FortranRounding), double);
-#if __x86_64__
+#if __x86_64__ && !defined(_MSC_VER)
 struct NS(ConversionToDecimalResult)
     ConvertLongDoubleToDecimal(char *, size_t, enum NS(DecimalConversionFlags),
         int digits, enum NS(FortranRounding), long double);
@@ -140,7 +140,7 @@ enum NS(ConversionResultFlags)
     ConvertDecimalToFloat(const char **, float *, enum NS(FortranRounding));
 enum NS(ConversionResultFlags)
     ConvertDecimalToDouble(const char **, double *, enum NS(FortranRounding));
-#if __x86_64__
+#if __x86_64__ && !defined(_MSC_VER)
 enum NS(ConversionResultFlags) ConvertDecimalToLongDouble(
     const char **, long double *, enum NS(FortranRounding));
 #endif
index d15aab5..f4b6440 100644 (file)
@@ -389,7 +389,7 @@ ConversionToDecimalResult ConvertDoubleToDecimal(char *buffer, std::size_t size,
       rounding, Fortran::decimal::BinaryFloatingPointNumber<53>(x));
 }
 
-#if __x86_64__
+#if __x86_64__ && !defined(_MSC_VER)
 ConversionToDecimalResult ConvertLongDoubleToDecimal(char *buffer,
     std::size_t size, enum DecimalConversionFlags flags, int digits,
     enum FortranRounding rounding, long double x) {
index a07cd57..f71ca94 100644 (file)
@@ -417,7 +417,7 @@ enum ConversionResultFlags ConvertDecimalToDouble(
       reinterpret_cast<const void *>(&result.binary), sizeof *d);
   return result.flags;
 }
-#if __x86_64__
+#if __x86_64__ && !defined(_MSC_VER)
 enum ConversionResultFlags ConvertDecimalToLongDouble(
     const char **p, long double *ld, enum FortranRounding rounding) {
   auto result{Fortran::decimal::ConvertToBinary<64>(*p, rounding)};