[compiler-rt] r250365 - builtins: Expand out floating point exponents for MSVC

Saleem Abdulrasool via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 14 21:26:19 PDT 2015


Author: compnerd
Date: Wed Oct 14 23:26:19 2015
New Revision: 250365

URL: http://llvm.org/viewvc/llvm-project?rev=250365&view=rev
Log:
builtins: Expand out floating point exponents for MSVC

MSVC 2013 doesnt support C99 fully, including the hexidecimal floating point
representation.  Use the expanded value to permit building with it.

Patch by Tee Hao Wei!

Modified:
    compiler-rt/trunk/lib/builtins/floatdidf.c
    compiler-rt/trunk/lib/builtins/floatundidf.c

Modified: compiler-rt/trunk/lib/builtins/floatdidf.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/floatdidf.c?rev=250365&r1=250364&r2=250365&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/floatdidf.c (original)
+++ compiler-rt/trunk/lib/builtins/floatdidf.c Wed Oct 14 23:26:19 2015
@@ -32,8 +32,8 @@ ARM_EABI_FNALIAS(l2d, floatdidf)
 COMPILER_RT_ABI double
 __floatdidf(di_int a)
 {
-	static const double twop52 = 0x1.0p52;
-	static const double twop32 = 0x1.0p32;
+	static const double twop52 = 4503599627370496.0; // 0x1.0p52
+	static const double twop32 = 4294967296.0; // 0x1.0p32
 	
 	union { int64_t x; double d; } low = { .d = twop52 };
 	

Modified: compiler-rt/trunk/lib/builtins/floatundidf.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/floatundidf.c?rev=250365&r1=250364&r2=250365&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/floatundidf.c (original)
+++ compiler-rt/trunk/lib/builtins/floatundidf.c Wed Oct 14 23:26:19 2015
@@ -32,9 +32,9 @@ ARM_EABI_FNALIAS(ul2d, floatundidf)
 COMPILER_RT_ABI double
 __floatundidf(du_int a)
 {
-	static const double twop52 = 0x1.0p52;
-	static const double twop84 = 0x1.0p84;
-	static const double twop84_plus_twop52 = 0x1.00000001p84;
+	static const double twop52 = 4503599627370496.0; // 0x1.0p52
+	static const double twop84 = 19342813113834066795298816.0; // 0x1.0p84
+	static const double twop84_plus_twop52 = 19342813118337666422669312.0; // 0x1.00000001p84
 	
 	union { uint64_t x; double d; } high = { .d = twop84 };
 	union { uint64_t x; double d; } low = { .d = twop52 };




More information about the llvm-commits mailing list