* resolve.c (resolve_actual_arglist): Remove the special case for
authorfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 24 Nov 2006 21:45:36 +0000 (21:45 +0000)
committerfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 24 Nov 2006 21:45:36 +0000 (21:45 +0000)
CHAR.
* intrinsic.c (add_functions): Remove the special case for CHAR.

* gfortran.dg/specifics_1.f90: Remove check for CHAR.
* gfortran.dg/specifics_2.f90: Remove check for CHAR.
* gfortran.dg/specifics_3.f90: Remove.

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

gcc/fortran/ChangeLog
gcc/fortran/intrinsic.c
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/specifics_1.f90
gcc/testsuite/gfortran.dg/specifics_2.f90
gcc/testsuite/gfortran.dg/specifics_3.f90 [deleted file]

index 8391c96..856f1e5 100644 (file)
@@ -1,3 +1,9 @@
+2006-11-24  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
+
+       * resolve.c (resolve_actual_arglist): Remove the special case for
+       CHAR.
+       * intrinsic.c (add_functions): Remove the special case for CHAR.
+
 2006-11-22  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
 
        PR fortran/29441
index d284f3c..ea68d69 100644 (file)
@@ -200,7 +200,7 @@ do_check (gfc_intrinsic_sym * specific, gfc_actual_arglist * arg)
    Argument list:
       char *     name of function
       int        whether function is elemental
-      int        If the function can be used as an actual argument [1] [2]
+      int        If the function can be used as an actual argument [1]
       bt         return type of function
       int        kind of return type of function
       int        Fortran standard version
@@ -221,10 +221,7 @@ do_check (gfc_intrinsic_sym * specific, gfc_actual_arglist * arg)
      determined by its presence on the 13.6 list in Fortran 2003.  The
      following intrinsics, which are GNU extensions, are considered allowed
      as actual arguments: ACOSH ATANH DACOSH DASINH DATANH DCONJG DIMAG
-     ZABS ZCOS ZEXP ZLOG ZSIN ZSQRT.
- [2] The value 2 is used in this field for CHAR, which is allowed as an
-     actual argument in F2003, but not in F95. It is the only such
-     intrinsic function.  */
+     ZABS ZCOS ZEXP ZLOG ZSIN ZSQRT.  */
 
 static void
 add_sym (const char *name, int elemental, int actual_ok, bt type, int kind,
@@ -1180,7 +1177,7 @@ add_functions (void)
 
   make_generic ("ceiling", GFC_ISYM_CEILING, GFC_STD_F95);
 
-  add_sym_2 ("char", 1, 2, BT_CHARACTER, dc, GFC_STD_F77,
+  add_sym_2 ("char", ELEMENTAL, ACTUAL_NO, BT_CHARACTER, dc, GFC_STD_F77,
             gfc_check_char, gfc_simplify_char, gfc_resolve_char,
             i, BT_INTEGER, di, REQUIRED, kind, BT_INTEGER, di, OPTIONAL);
 
index e798070..44ca7d9 100644 (file)
@@ -881,12 +881,6 @@ resolve_actual_arglist (gfc_actual_arglist * arg)
              gfc_error ("Intrinsic '%s' at %L is not allowed as an "
                         "actual argument", sym->name, &e->where);
            }
-         else if (sym->attr.intrinsic && actual_ok == 2)
-         /* We need a special case for CHAR, which is the only intrinsic
-            function allowed as actual argument in F2003 and not allowed
-            in F95.  */
-           gfc_notify_std (GFC_STD_F2003, "Fortran 2003: CHAR intrinsic "
-                           "as actual argument at %L", &e->where);
 
          if (sym->attr.contained && !sym->attr.use_assoc
              && sym->ns->proc_name->attr.flavor != FL_MODULE)
index 9372914..84fee3b 100644 (file)
@@ -1,3 +1,9 @@
+2006-11-24  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
+
+       * gfortran.dg/specifics_1.f90: Remove check for CHAR.
+       * gfortran.dg/specifics_2.f90: Remove check for CHAR.
+       * gfortran.dg/specifics_3.f90: Remove.
+
 2006-11-24  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/29955
index a100df4..8970607 100644 (file)
@@ -145,12 +145,6 @@ subroutine test_len(fn,val,res)
   if (res .ne. fn(val)) call abort
 end subroutine
 
-subroutine test_char(fn,val,res)
-  integer val
-  character(len=1) fn, res
-  if (res .ne. fn(val)) call abort
-end subroutine
-
 subroutine test_index(fn,val1,val2,res)
   integer fn, res
   character(len=*) val1, val2
@@ -235,7 +229,6 @@ program specifics
   intrinsic mod
   intrinsic len
   intrinsic index
-  intrinsic char
 
   intrinsic aimag
   intrinsic dimag
@@ -319,7 +312,6 @@ program specifics
   call test_iabs (iabs, -7, iabs(-7))
   call test_idim (mod, 5, 2, mod(5,2))
   call test_len (len, "foobar", len("foobar"))
-  call test_char (char, 47, char(47))
   call test_index (index, "foobarfoobar", "bar", index("foobarfoobar","bar"))
 
 end program
index 399dbd5..4de0925 100644 (file)
@@ -1,7 +1,7 @@
 ! { dg-do compile }
 ! This is the list of intrinsics allowed as actual arguments
  intrinsic abs,acos,acosh,aimag,aint,alog,alog10,amod,anint,asin,asinh,atan,&
- atan2,atanh,cabs,ccos,cexp,char,clog,conjg,cos,cosh,csin,csqrt,dabs,dacos,&
+ atan2,atanh,cabs,ccos,cexp,clog,conjg,cos,cosh,csin,csqrt,dabs,dacos,&
  dacosh,dasin,dasinh,datan,datan2,datanh,dconjg,dcos,dcosh,ddim,dexp,dim,&
  dimag,dint,dlog,dlog10,dmod,dnint,dprod,dsign,dsin,dsinh,dsqrt,dtan,dtanh,&
  exp,iabs,idim,idnint,index,isign,len,mod,nint,sign,sin,sinh,sqrt,tan,&
@@ -24,7 +24,6 @@
   call foo(cabs)
   call foo(ccos)
   call foo(cexp)
-  call foo(char)
   call foo(clog)
   call foo(conjg)
   call foo(cos)
diff --git a/gcc/testsuite/gfortran.dg/specifics_3.f90 b/gcc/testsuite/gfortran.dg/specifics_3.f90
deleted file mode 100644 (file)
index 7f5c427..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-! { dg-do compile }
-! { dg-options "-std=f95" }
-  intrinsic char
-  call foo(char) ! { dg-error "Fortran 2003: CHAR intrinsic as actual argument" }
-  end