From fc5212f328b4002c83b4437bae5446d465fd69a6 Mon Sep 17 00:00:00 2001 From: fxcoudert Date: Fri, 24 Nov 2006 21:45:36 +0000 Subject: [PATCH] * resolve.c (resolve_actual_arglist): Remove the special case for 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 | 6 ++++++ gcc/fortran/intrinsic.c | 9 +++------ gcc/fortran/resolve.c | 6 ------ gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gfortran.dg/specifics_1.f90 | 8 -------- gcc/testsuite/gfortran.dg/specifics_2.f90 | 3 +-- gcc/testsuite/gfortran.dg/specifics_3.f90 | 5 ----- 7 files changed, 16 insertions(+), 27 deletions(-) delete mode 100644 gcc/testsuite/gfortran.dg/specifics_3.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 8391c96..856f1e5 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2006-11-24 Francois-Xavier Coudert + + * 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 PR fortran/29441 diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index d284f3c..ea68d69 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -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); diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index e798070..44ca7d9 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -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) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9372914..84fee3b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2006-11-24 Francois-Xavier Coudert + + * 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 PR c/29955 diff --git a/gcc/testsuite/gfortran.dg/specifics_1.f90 b/gcc/testsuite/gfortran.dg/specifics_1.f90 index a100df4..8970607 100644 --- a/gcc/testsuite/gfortran.dg/specifics_1.f90 +++ b/gcc/testsuite/gfortran.dg/specifics_1.f90 @@ -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 diff --git a/gcc/testsuite/gfortran.dg/specifics_2.f90 b/gcc/testsuite/gfortran.dg/specifics_2.f90 index 399dbd5..4de0925 100644 --- a/gcc/testsuite/gfortran.dg/specifics_2.f90 +++ b/gcc/testsuite/gfortran.dg/specifics_2.f90 @@ -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 index 7f5c427..0000000 --- a/gcc/testsuite/gfortran.dg/specifics_3.f90 +++ /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 -- 2.7.4