This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Patch installed for warnings from i370


Fixes warnings from i370 platforms.  Tested by building i370.o on
i370-unknown-linux-gnu i370-unknown-mvs i370-unknown-opened.

Note I wasn't able to fix all of the format specifier problems.  In
both copies of i370.h's PRINT_OPERAND, it uses a non-conforming %08X
specifier in some places.  (Non-conforming in the sense that we don't
handle that specifier for HOST_WIDE_INT in hwint.h.)  This prevents
final.c from compiling.  But the patch is still an improvement.

Also, PRINT_OPERAND is just begging to be converted into a function.
An i370 maintainer should update this port.

Installed as obvious.



2003-05-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* i370.c (ascebc, ebcasc): Wrap in macros controlling usage.
	(i370_output_function_prologue): Fix format specifier warnings.
	* i370.h (PRINT_OPERAND): Likewise.

diff -rup orig/egcc-CVS20030516/gcc/config/i370/i370.c egcc-CVS20030516/gcc/config/i370/i370.c
--- orig/egcc-CVS20030516/gcc/config/i370/i370.c	2003-04-17 21:09:45.000000000 -0400
+++ egcc-CVS20030516/gcc/config/i370/i370.c	2003-05-16 17:11:14.918436000 -0400
@@ -173,6 +173,7 @@ static const char *const mvs_function_ta
 #endif /* TARGET_HLASM */
 /* ===================================================== */
 
+#if defined(TARGET_EBCDIC) && !defined(HOST_EBCDIC)
 /* ASCII to EBCDIC conversion table.  */
 static const unsigned char ascebc[256] =
 {
@@ -225,7 +226,10 @@ static const unsigned char ascebc[256] =
      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0xFF
 };
+#endif /* TARGET_EBCDIC && ! HOST_EBCDIC */
+
 
+#if defined(HOST_EBCDIC) && !defined(TARGET_EBCDIC)
 /* EBCDIC to ASCII conversion table.  */
 static const unsigned char ebcasc[256] =
 {
@@ -294,6 +298,7 @@ static const unsigned char ebcasc[256] =
  /*F8   8     9                                     */
      0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF
 };
+#endif /* HOST_EBCDIC && ! TARGET_EBCDIC */
 
 /* Initialize the GCC target structure.  */
 #ifdef TARGET_HLASM
@@ -1302,8 +1307,9 @@ i370_output_function_prologue (f, l)
   fprintf (f, "* Function %s prologue\n", mvs_function_name);
   fprintf (f, "FDSE%03d\tDSECT\n", function_label_index);
   fprintf (f, "\tDS\tD\n");
-  fprintf (f, "\tDS\tCL(%d)\n", STACK_POINTER_OFFSET + l
-			+ current_function_outgoing_args_size);
+  fprintf (f, "\tDS\tCL(" HOST_WIDE_INT_PRINT_DEC ")\n",
+	   STACK_POINTER_OFFSET + l
+	   + current_function_outgoing_args_size);
   fprintf (f, "\tORG\tFDSE%03d\n", function_label_index);
   fprintf (f, "\tDS\tCL(120+8)\n");
   fprintf (f, "\tORG\n");
@@ -1491,7 +1497,8 @@ i370_output_function_prologue (f, frame_
   aligned_size = (stackframe_size + 7) >> 3;
   aligned_size <<= 3;
   
-  fprintf (f, "# arg_size=0x%x frame_size=0x%x aligned size=0x%x\n", 
+  fprintf (f, "# arg_size=0x%x frame_size=" HOST_WIDE_INT_PRINT_HEX
+	   " aligned size=0x%x\n", 
      current_function_outgoing_args_size, frame_size, aligned_size);
 
   fprintf (f, "\t.using\t.,r15\n");
diff -rup orig/egcc-CVS20030516/gcc/config/i370/i370.h egcc-CVS20030516/gcc/config/i370/i370.h
--- orig/egcc-CVS20030516/gcc/config/i370/i370.h	2003-05-12 20:01:57.000000000 -0400
+++ egcc-CVS20030516/gcc/config/i370/i370.h	2003-05-16 17:23:29.164298000 -0400
@@ -1249,7 +1249,7 @@ enum reg_class
 	  if (CODE == 'O')						\
 	    {								\
 	      if (GET_CODE (addr) == PLUS)				\
-		fprintf (FILE, "%d", INTVAL (XEXP (addr, 1)));		\
+		fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, INTVAL (XEXP (addr, 1))); \
 	      else							\
 		fprintf (FILE, "0");					\
 	    }								\
@@ -1274,21 +1274,21 @@ enum reg_class
 	break;								\
       case CONST_INT:					        	\
 	if (CODE == 'B')						\
-	  fprintf (FILE, "%d", INTVAL (XV) & 0xff);			\
+	  fprintf (FILE, "%d", (int) (INTVAL (XV) & 0xff));		\
 	else if (CODE == 'X')						\
-	  fprintf (FILE, "%02X", INTVAL (XV) & 0xff);			\
+	  fprintf (FILE, "%02X", (int) (INTVAL (XV) & 0xff));		\
 	else if (CODE == 'h')						\
-	  fprintf (FILE, "%d", (INTVAL (XV) << 16) >> 16);		\
+	  fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, (INTVAL (XV) << 16) >> 16); \
 	else if (CODE == 'H')						\
 	  {								\
 	    mvs_page_lit += 2;						\
-	    fprintf (FILE, "=H'%d'", (INTVAL (XV) << 16) >> 16);	\
+	    fprintf (FILE, "=H'" HOST_WIDE_INT_PRINT_DEC "'", (INTVAL (XV) << 16) >> 16); \
 	  }								\
 	else if (CODE == 'K')						\
 	  {								\
             /* auto sign-extension of signed 16-bit to signed 32-bit */	\
 	    mvs_page_lit += 4;						\
-	    fprintf (FILE, "=F'%d'", (INTVAL (XV) << 16) >> 16);	\
+	    fprintf (FILE, "=F'" HOST_WIDE_INT_PRINT_DEC "'", (INTVAL (XV) << 16) >> 16); \
 	  }								\
 	else if (CODE == 'W')						\
 	  {								\
@@ -1304,7 +1304,7 @@ enum reg_class
 	else								\
 	  {								\
 	    mvs_page_lit += 4;						\
-	    fprintf (FILE, "=F'%d'", INTVAL (XV));			\
+	    fprintf (FILE, "=F'" HOST_WIDE_INT_PRINT_DEC "'", INTVAL (XV)); \
 	  }								\
 	break;								\
       case CONST_DOUBLE:						\
@@ -1362,8 +1362,8 @@ enum reg_class
 		fprintf (FILE, "=V(");					\
 		ASM_OUTPUT_LABELREF (FILE,				\
 				  XSTR (XEXP (XEXP (XV, 0), 0), 0));	\
-		fprintf (FILE, ")\n\tA\t%s,=F'%d'", curreg,		\
-				  INTVAL (XEXP (XEXP (XV, 0), 1)));	\
+		fprintf (FILE, ")\n\tA\t%s,=F'" HOST_WIDE_INT_PRINT_DEC "'", \
+			 curreg, INTVAL (XEXP (XEXP (XV, 0), 1)));	\
 	      }								\
 	    else							\
 	      {								\
@@ -1543,7 +1543,7 @@ enum reg_class
 	  if (CODE == 'O')						\
 	    {								\
 	      if (GET_CODE (addr) == PLUS)				\
-		fprintf (FILE, "%d", INTVAL (XEXP (addr, 1)));		\
+		fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, INTVAL (XEXP (addr, 1))); \
 	      else							\
 		fprintf (FILE, "0");					\
 	    }								\
@@ -1568,21 +1568,23 @@ enum reg_class
 	break;								\
       case CONST_INT:					        	\
 	if (CODE == 'B')						\
-	  fprintf (FILE, "%d", INTVAL (XV) & 0xff);			\
+	  fprintf (FILE, "%d", (int) (INTVAL (XV) & 0xff));		\
 	else if (CODE == 'X')						\
-	  fprintf (FILE, "%02X", INTVAL (XV) & 0xff);			\
+	  fprintf (FILE, "%02X", (int) (INTVAL (XV) & 0xff));		\
 	else if (CODE == 'h')						\
-	  fprintf (FILE, "%d", (INTVAL (XV) << 16) >> 16);		\
+	  fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, (INTVAL (XV) << 16) >> 16); \
 	else if (CODE == 'H')						\
 	  {								\
 	    mvs_page_lit += 2;						\
-	    fprintf (FILE, "=H'%d'", (INTVAL (XV) << 16) >> 16);	\
+	    fprintf (FILE, "=H'" HOST_WIDE_INT_PRINT_DEC "'",		\
+		     (INTVAL (XV) << 16) >> 16);			\
 	  }								\
 	else if (CODE == 'K')						\
 	  {								\
             /* auto sign-extension of signed 16-bit to signed 32-bit */	\
 	    mvs_page_lit += 4;						\
-	    fprintf (FILE, "=F'%d'", (INTVAL (XV) << 16) >> 16);	\
+	    fprintf (FILE, "=F'" HOST_WIDE_INT_PRINT_DEC "'",		\
+		     (INTVAL (XV) << 16) >> 16);			\
 	  }								\
 	else if (CODE == 'W')						\
 	  {								\
@@ -1598,7 +1600,7 @@ enum reg_class
 	else								\
 	  {								\
 	    mvs_page_lit += 4;						\
-	    fprintf (FILE, "=F'%d'", INTVAL (XV));			\
+	    fprintf (FILE, "=F'" HOST_WIDE_INT_PRINT_DEC "'", INTVAL (XV)); \
 	  }								\
 	break;								\
       case CONST_DOUBLE:						\
@@ -1656,8 +1658,8 @@ enum reg_class
 		fprintf (FILE, "=V(");					\
 		ASM_OUTPUT_LABELREF (FILE,				\
 				  XSTR (XEXP (XEXP (XV, 0), 0), 0));	\
-		fprintf (FILE, ")\n\tA\t%s,=F'%d'", curreg,		\
-				  INTVAL (XEXP (XEXP (XV, 0), 1)));	\
+		fprintf (FILE, ")\n\tA\t%s,=F'" HOST_WIDE_INT_PRINT_DEC "'", \
+			 curreg, INTVAL (XEXP (XEXP (XV, 0), 1)));	\
 	      }								\
 	    else							\
 	      {								\


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]