VirtualBox

Changeset 96193 in vbox


Ignore:
Timestamp:
Aug 13, 2022 5:27:16 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
153001
Message:

iprt/cdefs.h,types.h: Better RT_COMPILER_LONG_DOUBLE_BITS ++ detection for gcc and clang (the windows gcc uses 80-bit long double, unlike MSC). bugref:10261

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/cdefs.h

    r96192 r96193  
    11231123* IEEE quadruple precision floating (128-bit).
    11241124* @note Currently not able to detect this, so must be explicitly defined. */
    1125 #if defined(RT_OS_WINDOWS) || defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) /* the M1 arm64 at least */
    1126 # define RT_COMPILER_LONG_DOUBLE_BITS       64
     1125#if defined(__LDBL_MANT_DIG__) /* GCC & clang have this defined and should be more reliable.  */
     1126# if __LDBL_MANT_DIG__ == 53
     1127#  define RT_COMPILER_LONG_DOUBLE_BITS          64
     1128#  define RT_COMPILER_WITH_64BIT_LONG_DOUBLE
     1129#  undef  RT_COMPILER_WITH_80BIT_LONG_DOUBLE
     1130#  undef  RT_COMPILER_WITH_128BIT_LONG_DOUBLE
     1131# elif __LDBL_MANT_DIG__ == 64
     1132#  define RT_COMPILER_LONG_DOUBLE_BITS          80
     1133#  undef  RT_COMPILER_WITH_64BIT_LONG_DOUBLE
     1134#  define RT_COMPILER_WITH_80BIT_LONG_DOUBLE
     1135#  undef  RT_COMPILER_WITH_128BIT_LONG_DOUBLE
     1136# elif __LDBL_MANT_DIG__ == 113
     1137#  define RT_COMPILER_LONG_DOUBLE_BITS          128
     1138#  undef  RT_COMPILER_WITH_64BIT_LONG_DOUBLE
     1139#  undef  RT_COMPILER_WITH_80BIT_LONG_DOUBLE
     1140#  define RT_COMPILER_WITH_128BIT_LONG_DOUBLE
     1141# else
     1142#  error "Port me!"
     1143# endif
     1144#elif defined(RT_OS_WINDOWS) || defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) /* the M1 arm64 at least */
     1145# define RT_COMPILER_LONG_DOUBLE_BITS           64
    11271146# define RT_COMPILER_WITH_64BIT_LONG_DOUBLE
    11281147# undef  RT_COMPILER_WITH_80BIT_LONG_DOUBLE
    11291148# undef  RT_COMPILER_WITH_128BIT_LONG_DOUBLE
    11301149#elif defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)
    1131 # define RT_COMPILER_LONG_DOUBLE_BITS       80
     1150# define RT_COMPILER_LONG_DOUBLE_BITS           80
    11321151# undef  RT_COMPILER_WITH_64BIT_LONG_DOUBLE
    11331152# define RT_COMPILER_WITH_80BIT_LONG_DOUBLE
    11341153# undef  RT_COMPILER_WITH_128BIT_LONG_DOUBLE
    11351154#elif defined(RT_ARCH_SPARC) || defined(RT_ARCH_SPARC64)
    1136 # define RT_COMPILER_LONG_DOUBLE_BITS       128
     1155# define RT_COMPILER_LONG_DOUBLE_BITS           128
    11371156# undef  RT_COMPILER_WITH_64BIT_LONG_DOUBLE
    11381157# undef  RT_COMPILER_WITH_80BIT_LONG_DOUBLE
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette