From: Tobias Burnus Date: Tue, 17 Jul 2012 09:40:12 +0000 (+0200) Subject: re PR fortran/52101 (Obsolescence warning for non-obs. feature character name*length) X-Git-Tag: releases/gcc-4.8.0~4445 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2767f2cc5cc916f4a99cbfd510cf5a5454c54221;p=thirdparty%2Fgcc.git re PR fortran/52101 (Obsolescence warning for non-obs. feature character name*length) 2012-07-17 Tobias Burnus PR fortran/52101 * decl.c (match_char_length): Extra argument, show obsolenscent warning only if *length is used after the typename. (variable_decl, gfc_match_char_spec): Update call 2012-07-17 Tobias Burnus PR fortran/52101 * gfortran.dg/oldstyle_4.f90: New. From-SVN: r189565 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index fede706c0c65..904201478029 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2012-07-17 Tobias Burnus + + PR fortran/52101 + * decl.c (match_char_length): Extra argument, show obsolenscent + warning only if *length is used after the typename. + (variable_decl, gfc_match_char_spec): Update call + 2012-07-17 Tobias Burnus Steven G. Kargl diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 9bd3dc3a688a..89d501cdc183 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -723,7 +723,7 @@ syntax: char_len_param_value in parenthesis. */ static match -match_char_length (gfc_expr **expr, bool *deferred) +match_char_length (gfc_expr **expr, bool *deferred, bool obsolenscent_check) { int length; match m; @@ -739,8 +739,9 @@ match_char_length (gfc_expr **expr, bool *deferred) if (m == MATCH_YES) { - if (gfc_notify_std (GFC_STD_F95_OBS, "Obsolescent feature: " - "Old-style character length at %C") == FAILURE) + if (obsolenscent_check + && gfc_notify_std (GFC_STD_F95_OBS, "Obsolescent feature: " + "Old-style character length at %C") == FAILURE) return MATCH_ERROR; *expr = gfc_get_int_expr (gfc_default_integer_kind, NULL, length); return m; @@ -1849,7 +1850,7 @@ variable_decl (int elem) if (current_ts.type == BT_CHARACTER) { - switch (match_char_length (&char_len, &cl_deferred)) + switch (match_char_length (&char_len, &cl_deferred, false)) { case MATCH_YES: cl = gfc_new_charlen (gfc_current_ns, NULL); @@ -2411,7 +2412,7 @@ gfc_match_char_spec (gfc_typespec *ts) /* Try the old-style specification first. */ old_char_selector = 0; - m = match_char_length (&len, &deferred); + m = match_char_length (&len, &deferred, true); if (m != MATCH_NO) { if (m == MATCH_YES) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b978c907e040..56743bd137b3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-07-17 Tobias Burnus + + PR fortran/52101 + * gfortran.dg/oldstyle_4.f90: New. + 2012-07-17 Tobias Burnus PR fortran/49265 diff --git a/gcc/testsuite/gfortran.dg/oldstyle_4.f90 b/gcc/testsuite/gfortran.dg/oldstyle_4.f90 new file mode 100644 index 000000000000..d40abeb61d9c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/oldstyle_4.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! { dg-options "-std=f95" } +! +! PR fortran/52101 +! +! Contributed by John Harper +! +program foo + character*10 s ! { dg-warning "Obsolescent feature: Old-style character length" } + character t*10 ! Still okay + s = 'foo' + t = 'bar' +end program foo