warnings fixes, Fortran subdir

Zack Weinberg zack@wolery.cumb.org
Tue Feb 1 13:32:00 GMT 2000


This gets rid of all the 'long switch expression not converted to int'
warnings from the Fortran subdir.

zw

	* expr.c (ffeexpr_percent_): Clamp token length before
	switching.
	* fini.c: Likewise.
	* lex.c (ffelex_prepare_eos_, ffelex_file_fixed,
	ffelex_file_free): Convert switch on ffelex_raw_mode_ to
	if-else if chain.
	(ffelex_set_expecting_hollerith): Convert switch on length to
	if-else if chain.

===================================================================
Index: f/expr.c
--- f/expr.c	1999/05/15 15:46:08	1.18
+++ f/expr.c	2000/02/01 21:25:19
@@ -8585,8 +8585,11 @@ static ffeexprPercent_
 ffeexpr_percent_ (ffelexToken t)
 {
   const char *p;
-
-  switch (ffelex_token_length (t))
+  ffeTokenLength l = ffelex_token_length (t);
+  if (l > 5)
+    return FFEEXPR_percentNONE_;
+  
+  switch ((int) l)
     {
     case 3:
       switch (*(p = ffelex_token_text (t)))
===================================================================
Index: f/fini.c
--- f/fini.c	1999/11/29 02:50:04	1.13
+++ f/fini.c	2000/02/01 21:25:19
@@ -486,52 +486,66 @@ typedef enum %s_ %s;\n\
 %c\n\
   char *p;\n\
   int c;\n\
+  ffeTokenLength l;
 \n\
   p = ffelex_token_text (t);\n\
+  l = ffelex_token_length (t);\n\
 \n\
 ",
 	   storage, type, routine, '{');
 
   if (do_name)
     {
+      /* Find greatest non-empty length list. */
+
+      for (len = ARRAY_SIZE (names) - 1;
+	   names[len].first == (name) &names[len];
+	   --len)
+	;
+
       if (do_names)
 	fprintf (out,
 		 "\
   if (ffelex_token_type (t) == FFELEX_typeNAME)\n\
     {\n\
-      switch (ffelex_token_length (t))\n\
+      if (l > %d)\n\
+	return %sNone%s;\n\
+      switch ((int) l)\n\
 \t{\n\
-"
-	  );
+",
+		 len, prefix, postfix);
       else
 	fprintf (out,
 		 "\
   assert (ffelex_token_type (t) == FFELEX_typeNAME);\n\
 \n\
-  switch (ffelex_token_length (t))\n\
+  if (l > %d)\n\
+    return %sNone%s;\n\
+  switch ((int) l)\n\
     {\n\
-"
-	  );
+",
+		 len, prefix, postfix);
 
-/* Now output the length as a case, followed by the binary search within that length.  */
+      /* Now output the length as a case, followed by the
+	 binary search within that length.  */
 
-      for (len = 0; ((size_t) len) < ARRAY_SIZE (names); ++len)
+      for (i = 0; i <= len; i++)
 	{
-	  if (names[len].first != (name) &names[len])
+	  if (names[i].first != (name) &names[i])
 	    {
 	      if (do_names)
 		fprintf (out,
 			 "\
 \tcase %d:\n\
 ",
-			 len);
+			 i);
 	      else
 		fprintf (out,
 			 "\
     case %d:\n\
 ",
-			 len);
-	      testname (FALSE, do_names ? 10 : 6, names[len].first, names[len].last);
+			 i);
+	      testname (FALSE, do_names ? 10 : 6, names[i].first, names[i].last);
 	      if (do_names)
 		fprintf (out,
 			 "\
@@ -569,48 +583,46 @@ typedef enum %s_ %s;\n\
 
   if (do_names)
     {
-      fputs ("\
-  assert (ffelex_token_type (t) == FFELEX_typeNAMES);\n\
-\n\
-  switch (ffelex_token_length (t))\n\
-    {\n\
-    default:\n\
-",
-	     out);
-
       /* Find greatest non-empty length list. */
 
       for (len = ARRAY_SIZE (names) - 1;
 	   names[len].first == (name) &names[len];
 	   --len)
 	;
-
-/* Now output the length as a case, followed by the binary search within that length. */
-
       if (len > 0)
 	{
+	  fprintf (out, "\
+  assert (ffelex_token_type (t) == FFELEX_typeNAMES);\n\
+\n\
+  if (l > %d)\n\
+    l = %d;
+  switch ((int) l)\n\
+    {\n\
+",
+		   len, len);
+	  /* Now output the length as a case, followed by the binary
+             search within that length. */
 	  for (; len != 0; --len)
 	    {
-	      fprintf (out,
-		       "\
+	      if (names[len].first != (name) &names[len])
+		{
+		  fprintf (out, "\
     case %d:\n\
 ",
 		       len);
-	      if (names[len].first != (name) &names[len])
-		testnames (FALSE, 6, len, names[len].first, names[len].last);
-	    }
-	  if (names[1].first == (name) &names[1])
-	    fprintf (out,
-		     "\
-      ;\n\
-"
-	      );		/* Need empty statement after an empty case
-				   1:  */
-	}
 
-      fprintf (out,
-	       "\
+		  testnames (FALSE, 6, len, names[len].first, names[len].last);
+		}
+	      else
+		fprintf (out, "\
+    case %d: ;\n\
+", len);
+	    }
+	  fprintf (out, "\
     }\n\
+");  
+	}
+      fprintf (out, "\
 \n\
   return %sNone%s;\n\
 }\n\
===================================================================
Index: f/lex.c
--- f/lex.c	1999/12/30 19:44:13	1.15
+++ f/lex.c	2000/02/01 21:25:20
@@ -918,39 +918,31 @@ ffelex_prepare_eos_ ()
     {
       ffelex_backslash_ (EOF, 0);
 
-      switch (ffelex_raw_mode_)
+      if (ffelex_raw_mode_ == -1)
 	{
-	case -2:
-	  break;
-
-	case -1:
-	  ffebad_start_lex ((ffelex_raw_char_ == '\'') ? FFEBAD_NO_CLOSING_APOSTROPHE
+	  ffebad_start_lex ((ffelex_raw_char_ == '\'')
+			    ? FFEBAD_NO_CLOSING_APOSTROPHE
 			    : FFEBAD_NO_CLOSING_QUOTE);
 	  ffebad_here (0, ffelex_token_->where_line, ffelex_token_->where_col);
 	  ffebad_here (1, ffelex_current_wl_, ffelex_current_wc_);
 	  ffebad_finish ();
-	  break;
-
-	case 0:
-	  break;
-
-	default:
-	  {
-	    char num[20];
+	}
+      else if (ffelex_raw_mode_ > 0)
+	{
+	  char num[20];
 
-	    ffebad_start_lex (FFEBAD_NOT_ENOUGH_HOLLERITH_CHARS);
-	    ffebad_here (0, ffelex_token_->where_line, ffelex_token_->where_col);
-	    ffebad_here (1, ffelex_current_wl_, ffelex_current_wc_);
-	    sprintf (num, "%lu", (unsigned long) ffelex_raw_mode_);
-	    ffebad_string (num);
-	    ffebad_finish ();
-	    /* Make sure the token has some text, might as well fill up with spaces.  */
-	    do
-	      {
-		ffelex_append_to_token_ (' ');
-	      } while (--ffelex_raw_mode_ > 0);
-	    break;
-	  }
+	  ffebad_start_lex (FFEBAD_NOT_ENOUGH_HOLLERITH_CHARS);
+	  ffebad_here (0, ffelex_token_->where_line, ffelex_token_->where_col);
+	  ffebad_here (1, ffelex_current_wl_, ffelex_current_wc_);
+	  sprintf (num, "%lu", (unsigned long) ffelex_raw_mode_);
+	  ffebad_string (num);
+	  ffebad_finish ();
+	  /* Make sure the token has some text,
+	     might as well fill up with spaces.  */
+	  do
+	    {
+	      ffelex_append_to_token_ (' ');
+	    } while (--ffelex_raw_mode_ > 0);
 	}
       ffelex_raw_mode_ = 0;
       ffelex_send_token_ ();
@@ -2377,19 +2369,18 @@ ffelex_file_fixed (ffewhereFile wf, FILE
 	  c = ' ';
 	}
 
-      switch (ffelex_raw_mode_)
+      if (ffelex_raw_mode_ == -3)
 	{
-	case -3:
 	  c = ffelex_backslash_ (c, column);
-	  if (c == EOF)
-	    break;
-
-	  if (!ffelex_backslash_reconsider_)
-	    ffelex_append_to_token_ (c);
-	  ffelex_raw_mode_ = -1;
-	  break;
-
-	case -2:
+	  if (c != EOF)
+	    {
+	      if (!ffelex_backslash_reconsider_)
+		ffelex_append_to_token_ (c);
+	      ffelex_raw_mode_ = -1;
+	    }
+	}
+      else if (ffelex_raw_mode_ == -2)
+	{
 	  if (c == ffelex_raw_char_)
 	    {
 	      ffelex_raw_mode_ = -1;
@@ -2400,35 +2391,28 @@ ffelex_file_fixed (ffewhereFile wf, FILE
 	      ffelex_raw_mode_ = 0;
 	      ffelex_backslash_reconsider_ = TRUE;
 	    }
-	  break;
-
-	case -1:
+	}
+      else if (ffelex_raw_mode_ == -1)
+	{
 	  if (c == ffelex_raw_char_)
 	    ffelex_raw_mode_ = -2;
 	  else
 	    {
 	      c = ffelex_backslash_ (c, column);
 	      if (c == EOF)
-		{
-		  ffelex_raw_mode_ = -3;
-		  break;
-		}
-
-	      ffelex_append_to_token_ (c);
+		ffelex_raw_mode_ = -3;
+	      else
+		ffelex_append_to_token_ (c);
 	    }
-	  break;
-
-	default:
+	}
+      else
+	{
 	  c = ffelex_backslash_ (c, column);
-	  if (c == EOF)
-	    break;
-
-	  if (!ffelex_backslash_reconsider_)
+	  if (c != EOF && !ffelex_backslash_reconsider_)
 	    {
 	      ffelex_append_to_token_ (c);
 	      --ffelex_raw_mode_;
 	    }
-	  break;
 	}
 
       if (ffelex_backslash_reconsider_)
@@ -3282,19 +3266,18 @@ ffelex_file_free (ffewhereFile wf, FILE 
 	  break;
 	}
 
-      switch (ffelex_raw_mode_)
+      if (ffelex_raw_mode_ == -3)
 	{
-	case -3:
 	  c = ffelex_backslash_ (c, column);
-	  if (c == EOF)
-	    break;
-
-	  if (!ffelex_backslash_reconsider_)
-	    ffelex_append_to_token_ (c);
-	  ffelex_raw_mode_ = -1;
-	  break;
-
-	case -2:
+	  if (c != EOF)
+	    {
+	      if (!ffelex_backslash_reconsider_)
+		ffelex_append_to_token_ (c);
+	      ffelex_raw_mode_ = -1;
+	    }
+	}
+      else if (ffelex_raw_mode_ == -2)
+	{
 	  if (c == ffelex_raw_char_)
 	    {
 	      ffelex_raw_mode_ = -1;
@@ -3305,35 +3288,28 @@ ffelex_file_free (ffewhereFile wf, FILE 
 	      ffelex_raw_mode_ = 0;
 	      ffelex_backslash_reconsider_ = TRUE;
 	    }
-	  break;
-
-	case -1:
+	}
+      else if (ffelex_raw_mode_ == -1)
+	{
 	  if (c == ffelex_raw_char_)
 	    ffelex_raw_mode_ = -2;
 	  else
 	    {
 	      c = ffelex_backslash_ (c, column);
 	      if (c == EOF)
-		{
-		  ffelex_raw_mode_ = -3;
-		  break;
-		}
-
-	      ffelex_append_to_token_ (c);
+		ffelex_raw_mode_ = -3;
+	      else
+		ffelex_append_to_token_ (c);
 	    }
-	  break;
-
-	default:
+	}
+      else
+	{
 	  c = ffelex_backslash_ (c, column);
-	  if (c == EOF)
-	    break;
-
-	  if (!ffelex_backslash_reconsider_)
+	  if (c != EOF && !ffelex_backslash_reconsider_)
 	    {
 	      ffelex_append_to_token_ (c);
 	      --ffelex_raw_mode_;
 	    }
-	  break;
 	}
 
       if (ffelex_backslash_reconsider_)
@@ -4196,24 +4172,21 @@ ffelex_set_expecting_hollerith (long len
   ffewhere_column_kill (ffelex_raw_where_col_);
 
   /* Now handle the length function. */
-  switch (length)
+  if (length == 0)
     {
-    case 0:
       ffelex_expecting_hollerith_ = 0;
       ffelex_raw_mode_ = 0;
       ffelex_raw_where_line_ = ffewhere_line_unknown ();
       ffelex_raw_where_col_ = ffewhere_column_unknown ();
       return;			/* Don't set new line/column info from args. */
-
-    case -1:
+    }
+  else if (length == -1)
+    {
       ffelex_raw_mode_ = -1;
       ffelex_raw_char_ = which;
-      break;
-
-    default:			/* length > 0 */
-      ffelex_expecting_hollerith_ = length;
-      break;
     }
+  else			/* length > 0 */
+    ffelex_expecting_hollerith_ = length;
 
   /* Now set new line/column information from passed args. */
 


More information about the Gcc-patches mailing list