aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2012-07-17 11:40:12 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2012-07-17 11:40:12 +0200
commit2767f2cc5cc916f4a99cbfd510cf5a5454c54221 (patch)
tree4201cb480d0a338993f8d7f5a9550c6839536d71
parent22969a8cc829014eea1121926343509970fb4b47 (diff)
downloadgcc-2767f2cc5cc916f4a99cbfd510cf5a5454c54221.zip
gcc-2767f2cc5cc916f4a99cbfd510cf5a5454c54221.tar.gz
gcc-2767f2cc5cc916f4a99cbfd510cf5a5454c54221.tar.bz2
re PR fortran/52101 (Obsolescence warning for non-obs. feature character name*length)
2012-07-17 Tobias Burnus <burnus@net-b.de> 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 <burnus@net-b.de> PR fortran/52101 * gfortran.dg/oldstyle_4.f90: New. From-SVN: r189565
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/decl.c11
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/oldstyle_4.f9013
4 files changed, 31 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index fede706..9042014 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,4 +1,11 @@
2012-07-17 Tobias Burnus <burnus@net-b.de>
+
+ 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 <burnus@net-b.de>
Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/49265
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index 9bd3dc3..89d501c 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 b978c90..56743bd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2012-07-17 Tobias Burnus <burnus@net-b.de>
+ PR fortran/52101
+ * gfortran.dg/oldstyle_4.f90: New.
+
+2012-07-17 Tobias Burnus <burnus@net-b.de>
+
PR fortran/49265
* gfortran.dg/module_procedure_double_colon_3.f90: New.
* gfortran.dg/module_procedure_double_colon_4.f90: New.
diff --git a/gcc/testsuite/gfortran.dg/oldstyle_4.f90 b/gcc/testsuite/gfortran.dg/oldstyle_4.f90
new file mode 100644
index 0000000..d40abeb
--- /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