[Patches] CartGrid3D: reduce compiler warnings

Steve White steve.white at aei.mpg.de
Fri Mar 3 04:52:33 CST 2006


Hello,

This is part of a project to reduce the compiler warnings generated by
Cactus Flesh code.

Intel icc complains about lots of questionabale type conversions in
CartGrid3D/src/Symmetry.c.  Find attached a patch, to be applied from
within the CartGrid3D directory.

Notes
----- 
	* Code is macros within macros within macros that depend on outside
	entities.  Sometimes a type name is passed.

	* The innermost macro performs the type conversion

	* A typename is passed, but unfortunately, it isn't always the type
	being converted.  Sometimes it's a CCTK_COMPLEX type, but the type
	being converted is only a component of the complex.  

Solution
--------
	Invented a new preprocessor symbol, NUMBER_TYPE, which indicates the 
	of a scalar multiplication.

Tests
-----
	Ran full set of distributions testsuites both with and without the
	changes.  Results were identical.

-- 
Steve White : Programmer
Max-Planck-Institut für Gravitationsphysik      Albert-Einstein-Institut
Am Mühlenberg 1, D-14476 Golm, Germany                  +49-331-567-7625
-------------- next part --------------
? CartGrid3D.diff
Index: src/Symmetry.c
===================================================================
RCS file: /cactusdevcvs/CactusBase/CartGrid3D/src/Symmetry.c,v
retrieving revision 1.41
diff -u -r1.41 Symmetry.c
--- src/Symmetry.c	29 Jan 2005 17:11:13 -0000	1.41
+++ src/Symmetry.c	3 Mar 2006 10:34:02 -0000
@@ -311,8 +311,9 @@
     {                                                                         \
       for (ii = 0; ii < gdata.nghostzones[dir/2]; ii++)                       \
       {                                                                       \
-        _var[INDEX_3D (lsh, i, j, k)] NUMBER_PART = GFSym[vindex][dir] *      \
-             _var[INDEX_3D (lsh, iii, jjj, kkk)] NUMBER_PART;                 \
+        _var[INDEX_3D (lsh, i, j, k)] NUMBER_PART                             \
+                    = (NUMBER_TYPE)(GFSym[vindex][dir]                        \
+                      * _var[INDEX_3D (lsh, iii, jjj, kkk)] NUMBER_PART);     \
       }                                                                       \
     }                                                                         \
   }                                                                           \
@@ -326,8 +327,9 @@
     {                                                                         \
       for (ii = lsh[dir/2]-gdata.nghostzones[dir/2]; ii < lsh[dir/2]; ii++)   \
       {                                                                       \
-        _var[INDEX_3D (lsh, i, j, k)] NUMBER_PART = GFSym[vindex][dir] *      \
-             _var[INDEX_3D (lsh, iii, jjj, kkk)] NUMBER_PART;                 \
+        _var[INDEX_3D (lsh, i, j, k)] NUMBER_PART                             \
+                     = (NUMBER_TYPE)(GFSym[vindex][dir]                       \
+                       * _var[INDEX_3D (lsh, iii, jjj, kkk)] NUMBER_PART);    \
       }                                                                       \
     }                                                                         \
   }                                                                           \
@@ -446,55 +448,91 @@
  */
 
 #define NUMBER_PART .Re
+#define NUMBER_TYPE CCTK_REAL
 SYMMETRY_FUNCTION(CCTK_COMPLEX,R)
+#undef NUMBER_TYPE
 #ifdef HAVE_CCTK_COMPLEX8
+#define NUMBER_TYPE CCTK_REAL4
 SYMMETRY_FUNCTION(CCTK_COMPLEX8,R)
+#undef NUMBER_TYPE
 #endif
 #ifdef HAVE_CCTK_COMPLEX16
+#define NUMBER_TYPE CCTK_REAL8
 SYMMETRY_FUNCTION(CCTK_COMPLEX16,R)
+#undef NUMBER_TYPE
 #endif
 #ifdef HAVE_CCTK_COMPLEX32
+#define NUMBER_TYPE CCTK_REAL16
 SYMMETRY_FUNCTION(CCTK_COMPLEX32,R)
+#undef NUMBER_TYPE
 #endif
 #undef NUMBER_PART
 
 #define NUMBER_PART .Im
+#define NUMBER_TYPE CCTK_REAL
 SYMMETRY_FUNCTION(CCTK_COMPLEX,I)
+#undef NUMBER_TYPE
+#define NUMBER_TYPE CCTK_REAL4
 #ifdef HAVE_CCTK_COMPLEX8
 SYMMETRY_FUNCTION(CCTK_COMPLEX8,I)
+#undef NUMBER_TYPE
 #endif
 #ifdef HAVE_CCTK_COMPLEX16
+#define NUMBER_TYPE CCTK_REAL8
 SYMMETRY_FUNCTION(CCTK_COMPLEX16,I)
+#undef NUMBER_TYPE
 #endif
 #ifdef HAVE_CCTK_COMPLEX32
+#define NUMBER_TYPE CCTK_REAL16
 SYMMETRY_FUNCTION(CCTK_COMPLEX32,I)
+#undef NUMBER_TYPE
 #endif
 #undef NUMBER_PART
 
 #define NUMBER_PART 
+#define NUMBER_TYPE CCTK_BYTE
 SYMMETRY_FUNCTION(CCTK_BYTE,R)
+#undef NUMBER_TYPE
+#define NUMBER_TYPE CCTK_INT
 SYMMETRY_FUNCTION(CCTK_INT,R)
+#undef NUMBER_TYPE
 #ifdef HAVE_CCTK_INT1
+#define NUMBER_TYPE CCTK_INT1
 SYMMETRY_FUNCTION(CCTK_INT1,R)
+#undef NUMBER_TYPE
 #endif
 #ifdef HAVE_CCTK_INT2
+#define NUMBER_TYPE CCTK_INT2
 SYMMETRY_FUNCTION(CCTK_INT2,R)
+#undef NUMBER_TYPE
 #endif
 #ifdef HAVE_CCTK_INT4
+#define NUMBER_TYPE CCTK_INT4
 SYMMETRY_FUNCTION(CCTK_INT4,R)
+#undef NUMBER_TYPE
 #endif
 #ifdef HAVE_CCTK_INT8
+#define NUMBER_TYPE CCTK_INT8
 SYMMETRY_FUNCTION(CCTK_INT8,R)
+#undef NUMBER_TYPE
 #endif
+#define NUMBER_TYPE CCTK_REAL
 SYMMETRY_FUNCTION(CCTK_REAL,R)
+#undef NUMBER_TYPE
 #ifdef HAVE_CCTK_REAL4
+#define NUMBER_TYPE CCTK_REAL4
 SYMMETRY_FUNCTION(CCTK_REAL4,R)
+#undef NUMBER_TYPE
 #endif
 #ifdef HAVE_CCTK_REAL8
+#define NUMBER_TYPE CCTK_REAL8
 SYMMETRY_FUNCTION(CCTK_REAL8,R)
+#undef NUMBER_TYPE
 #endif
 #ifdef HAVE_CCTK_REAL16
+#define NUMBER_TYPE CCTK_REAL16
 SYMMETRY_FUNCTION(CCTK_REAL16,R)
+#undef NUMBER_TYPE
 #endif
 #undef NUMBER_PART
 


More information about the Patches mailing list