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