Add casts to suppress warnings about m68k-specific kluge in fmgr.c.
authorTom Lane
Fri, 13 Jul 2007 02:25:48 +0000 (02:25 +0000)
committerTom Lane
Fri, 13 Jul 2007 02:25:48 +0000 (02:25 +0000)
src/backend/utils/fmgr/fmgr.c

index 5a67a84cf880f32ff6c027add7a3a75ff65abad0..360cd5555daf9133d51f7b195b78b93ce20a9936 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.106 2007/04/06 04:21:43 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.107 2007/07/13 02:25:48 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -38,7 +38,8 @@
  * declare the function pointer to return int, so the compiler picks up the
  * return value from %d0. (Functions returning pointers put their value
  * *additionally* into %d0 for compatibility.) The price is that there are
- * some warnings about int->pointer conversions...
+ * some warnings about int->pointer conversions ... which we can suppress
+ * with suitably ugly casts in fmgr_oldstyle().
  */
 #if (defined(__mc68000__) || (defined(__m68k__))) && defined(__ELF__)
 typedef int32 (*func_ptr) ();
@@ -626,7 +627,7 @@ fmgr_oldstyle(PG_FUNCTION_ARGS)
    switch (n_arguments)
    {
        case 0:
-           returnValue = (*user_fn) ();
+           returnValue = (char *) (*user_fn) ();
            break;
        case 1:
 
@@ -635,108 +636,173 @@ fmgr_oldstyle(PG_FUNCTION_ARGS)
             * there are other functions still out there that also rely on
             * this undocumented hack?
             */
-           returnValue = (*user_fn) (fcinfo->arg[0], &fcinfo->isnull);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              &fcinfo->isnull);
            break;
        case 2:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1]);
            break;
        case 3:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2]);
            break;
        case 4:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3]);
            break;
        case 5:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3],
-                                     fcinfo->arg[4]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3],
+                                              fcinfo->arg[4]);
            break;
        case 6:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3],
-                                     fcinfo->arg[4], fcinfo->arg[5]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3],
+                                              fcinfo->arg[4],
+                                              fcinfo->arg[5]);
            break;
        case 7:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3],
-                                     fcinfo->arg[4], fcinfo->arg[5],
-                                     fcinfo->arg[6]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3],
+                                              fcinfo->arg[4],
+                                              fcinfo->arg[5],
+                                              fcinfo->arg[6]);
            break;
        case 8:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3],
-                                     fcinfo->arg[4], fcinfo->arg[5],
-                                     fcinfo->arg[6], fcinfo->arg[7]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3],
+                                              fcinfo->arg[4],
+                                              fcinfo->arg[5],
+                                              fcinfo->arg[6],
+                                              fcinfo->arg[7]);
            break;
        case 9:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3],
-                                     fcinfo->arg[4], fcinfo->arg[5],
-                                     fcinfo->arg[6], fcinfo->arg[7],
-                                     fcinfo->arg[8]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3],
+                                              fcinfo->arg[4],
+                                              fcinfo->arg[5],
+                                              fcinfo->arg[6],
+                                              fcinfo->arg[7],
+                                              fcinfo->arg[8]);
            break;
        case 10:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3],
-                                     fcinfo->arg[4], fcinfo->arg[5],
-                                     fcinfo->arg[6], fcinfo->arg[7],
-                                     fcinfo->arg[8], fcinfo->arg[9]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3],
+                                              fcinfo->arg[4],
+                                              fcinfo->arg[5],
+                                              fcinfo->arg[6],
+                                              fcinfo->arg[7],
+                                              fcinfo->arg[8],
+                                              fcinfo->arg[9]);
            break;
        case 11:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3],
-                                     fcinfo->arg[4], fcinfo->arg[5],
-                                     fcinfo->arg[6], fcinfo->arg[7],
-                                     fcinfo->arg[8], fcinfo->arg[9],
-                                     fcinfo->arg[10]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3],
+                                              fcinfo->arg[4],
+                                              fcinfo->arg[5],
+                                              fcinfo->arg[6],
+                                              fcinfo->arg[7],
+                                              fcinfo->arg[8],
+                                              fcinfo->arg[9],
+                                              fcinfo->arg[10]);
            break;
        case 12:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3],
-                                     fcinfo->arg[4], fcinfo->arg[5],
-                                     fcinfo->arg[6], fcinfo->arg[7],
-                                     fcinfo->arg[8], fcinfo->arg[9],
-                                     fcinfo->arg[10], fcinfo->arg[11]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3],
+                                              fcinfo->arg[4],
+                                              fcinfo->arg[5],
+                                              fcinfo->arg[6],
+                                              fcinfo->arg[7],
+                                              fcinfo->arg[8],
+                                              fcinfo->arg[9],
+                                              fcinfo->arg[10],
+                                              fcinfo->arg[11]);
            break;
        case 13:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3],
-                                     fcinfo->arg[4], fcinfo->arg[5],
-                                     fcinfo->arg[6], fcinfo->arg[7],
-                                     fcinfo->arg[8], fcinfo->arg[9],
-                                     fcinfo->arg[10], fcinfo->arg[11],
-                                     fcinfo->arg[12]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3],
+                                              fcinfo->arg[4],
+                                              fcinfo->arg[5],
+                                              fcinfo->arg[6],
+                                              fcinfo->arg[7],
+                                              fcinfo->arg[8],
+                                              fcinfo->arg[9],
+                                              fcinfo->arg[10],
+                                              fcinfo->arg[11],
+                                              fcinfo->arg[12]);
            break;
        case 14:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3],
-                                     fcinfo->arg[4], fcinfo->arg[5],
-                                     fcinfo->arg[6], fcinfo->arg[7],
-                                     fcinfo->arg[8], fcinfo->arg[9],
-                                     fcinfo->arg[10], fcinfo->arg[11],
-                                     fcinfo->arg[12], fcinfo->arg[13]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3],
+                                              fcinfo->arg[4],
+                                              fcinfo->arg[5],
+                                              fcinfo->arg[6],
+                                              fcinfo->arg[7],
+                                              fcinfo->arg[8],
+                                              fcinfo->arg[9],
+                                              fcinfo->arg[10],
+                                              fcinfo->arg[11],
+                                              fcinfo->arg[12],
+                                              fcinfo->arg[13]);
            break;
        case 15:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3],
-                                     fcinfo->arg[4], fcinfo->arg[5],
-                                     fcinfo->arg[6], fcinfo->arg[7],
-                                     fcinfo->arg[8], fcinfo->arg[9],
-                                     fcinfo->arg[10], fcinfo->arg[11],
-                                     fcinfo->arg[12], fcinfo->arg[13],
-                                     fcinfo->arg[14]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3],
+                                              fcinfo->arg[4],
+                                              fcinfo->arg[5],
+                                              fcinfo->arg[6],
+                                              fcinfo->arg[7],
+                                              fcinfo->arg[8],
+                                              fcinfo->arg[9],
+                                              fcinfo->arg[10],
+                                              fcinfo->arg[11],
+                                              fcinfo->arg[12],
+                                              fcinfo->arg[13],
+                                              fcinfo->arg[14]);
            break;
        case 16:
-           returnValue = (*user_fn) (fcinfo->arg[0], fcinfo->arg[1],
-                                     fcinfo->arg[2], fcinfo->arg[3],
-                                     fcinfo->arg[4], fcinfo->arg[5],
-                                     fcinfo->arg[6], fcinfo->arg[7],
-                                     fcinfo->arg[8], fcinfo->arg[9],
-                                     fcinfo->arg[10], fcinfo->arg[11],
-                                     fcinfo->arg[12], fcinfo->arg[13],
-                                     fcinfo->arg[14], fcinfo->arg[15]);
+           returnValue = (char *) (*user_fn) (fcinfo->arg[0],
+                                              fcinfo->arg[1],
+                                              fcinfo->arg[2],
+                                              fcinfo->arg[3],
+                                              fcinfo->arg[4],
+                                              fcinfo->arg[5],
+                                              fcinfo->arg[6],
+                                              fcinfo->arg[7],
+                                              fcinfo->arg[8],
+                                              fcinfo->arg[9],
+                                              fcinfo->arg[10],
+                                              fcinfo->arg[11],
+                                              fcinfo->arg[12],
+                                              fcinfo->arg[13],
+                                              fcinfo->arg[14],
+                                              fcinfo->arg[15]);
            break;
        default: