[m-rev.] diff: avoid compiler warnings from MSVC

Julien Fischer jfischer at opturion.com
Tue Jan 28 17:29:06 AEDT 2014

Avoid compiler warnings from MSVC in generated code.

 	Avoid warnings from MSVC about the types of the formal and actual parameters
 	of calls to MR_float_from_dword differing.  The formal parameters have type
 	MR_Word, but the Mercury compiler doesn't emit casts for the arguments.
 	(For GCC and clang, MR_float_from_dword is defined as a macro and the
 	necessary casts occur in its body.)  The fix is to rename the function
 	version of MR_float_from_dword and make MR_float_from_dword a forwarding macro
 	that inserts the necessary casts.


diff --git a/runtime/mercury_float.h b/runtime/mercury_float.h
index b302f80..9009593 100644
--- a/runtime/mercury_float.h
+++ b/runtime/mercury_float.h
@@ -137,11 +137,15 @@
          __ffdw.f;                                                           \
+    #define MR_float_from_dword(w0, w1)				 	    \
+	MR_float_from_dword_func((MR_Word)(w0), (MR_Word)(w1))
-    MR_float_from_dword(MR_Word w0, MR_Word w1);
+    MR_float_from_dword_func(MR_Word w0, MR_Word w1);

-    MR_float_from_dword(MR_Word w0, MR_Word w1)
+    MR_float_from_dword_func(MR_Word w0, MR_Word w1)
          union MR_Float_Dword __ffdw;
          __ffdw.w[0] = (MR_Word) (w0);

More information about the reviews mailing list