From: Jerry DeLisle Date: Sat, 15 Nov 2008 05:03:56 +0000 (+0000) Subject: re PR fortran/37988 (Edit descriptor checking (compile time) for "T)") X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=746578121846f7d43a2ed2ffa716a08750ea3dec;p=platform%2Fupstream%2Fgcc.git re PR fortran/37988 (Edit descriptor checking (compile time) for "T)") 2008-11-14 Jerry DeLisle PR fortran/37988 * io.c (enum format_token): For readability replace FMT_POS with FMT_T, FMT_TL, and FMT_TR. (format_lex): Use new enumerators. (check_format): Add check for missing positive integer. From-SVN: r141879 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b80aa9e..c3b58b5 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2008-11-14 Jerry DeLisle + + PR fortran/37988 + * io.c (enum format_token): For readability replace FMT_POS with FMT_T, + FMT_TL, and FMT_TR. (format_lex): Use new enumerators. (check_format): + Add check for missing positive integer. + 2008-10-14 Paul Thomas PR fortran/38033 diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index cb89edd..1c42a96 100644 --- a/gcc/fortran/io.c +++ b/gcc/fortran/io.c @@ -107,10 +107,10 @@ static gfc_dt *current_dt; typedef enum { FMT_NONE, FMT_UNKNOWN, FMT_SIGNED_INT, FMT_ZERO, FMT_POSINT, FMT_PERIOD, - FMT_COMMA, FMT_COLON, FMT_SLASH, FMT_DOLLAR, FMT_POS, FMT_LPAREN, + FMT_COMMA, FMT_COLON, FMT_SLASH, FMT_DOLLAR, FMT_LPAREN, FMT_RPAREN, FMT_X, FMT_SIGN, FMT_BLANK, FMT_CHAR, FMT_P, FMT_IBOZ, FMT_F, FMT_E, FMT_EXT, FMT_G, FMT_L, FMT_A, FMT_D, FMT_H, FMT_END, FMT_ERROR, FMT_DC, - FMT_DP + FMT_DP, FMT_T, FMT_TR, FMT_TL } format_token; @@ -314,10 +314,18 @@ format_lex (void) case 'T': c = next_char_not_space (&error); - if (c != 'L' && c != 'R') - unget_char (); - - token = FMT_POS; + switch (c) + { + case 'L': + token = FMT_TL; + break; + case 'R': + token = FMT_TR; + break; + default: + token = FMT_T; + unget_char (); + } break; case '(': @@ -596,7 +604,9 @@ format_item_1: goto finished; - case FMT_POS: + case FMT_T: + case FMT_TL: + case FMT_TR: case FMT_IBOZ: case FMT_F: case FMT_E: @@ -646,7 +656,17 @@ data_desc: goto optional_comma; - case FMT_POS: + case FMT_T: + case FMT_TL: + case FMT_TR: + t = format_lex (); + if (t != FMT_POSINT) + { + error = _("Positive width required with T descriptor"); + goto syntax; + } + break; + case FMT_L: t = format_lex (); if (t == FMT_ERROR)