+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
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
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,
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);
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)
+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
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
intrinsic mod
intrinsic len
intrinsic index
- intrinsic char
intrinsic aimag
intrinsic dimag
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
! { 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,&
call foo(cabs)
call foo(ccos)
call foo(cexp)
- call foo(char)
call foo(clog)
call foo(conjg)
call foo(cos)
+++ /dev/null
-! { dg-do compile }
-! { dg-options "-std=f95" }
- intrinsic char
- call foo(char) ! { dg-error "Fortran 2003: CHAR intrinsic as actual argument" }
- end