OSDN Git Service

2012-07-17 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Jul 2012 09:40:12 +0000 (09:40 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Jul 2012 09:40:12 +0000 (09:40 +0000)
        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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@189565 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/oldstyle_4.f90 [new file with mode: 0644]

index fede706..9042014 100644 (file)
@@ -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
index 9bd3dc3..89d501c 100644 (file)
@@ -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)
index b978c90..56743bd 100644 (file)
@@ -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 (file)
index 0000000..d40abeb
--- /dev/null
@@ -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