diff options
author | Steven G. Kargl <kargls@comcast.net> | 2008-09-06 17:11:29 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2008-09-06 17:11:29 +0200 |
commit | 2c68bc89b7f04ee6e599afb8a75734641e5a5038 (patch) | |
tree | 67cb2668f719844643b9fcb87857334f0174cdfe | |
parent | 9731c4a34803475968046006076f07d0fe5cd16c (diff) | |
download | gcc-2c68bc89b7f04ee6e599afb8a75734641e5a5038.zip gcc-2c68bc89b7f04ee6e599afb8a75734641e5a5038.tar.gz gcc-2c68bc89b7f04ee6e599afb8a75734641e5a5038.tar.bz2 |
re PR fortran/33229 (ICE with "intrinsic" plus calling a subroutine as function)
2008-09-06 Steven G. Kargl <kargls@comcast.net>
PR fortran/33229
* resolve.c (resolve_function): An intrinsic subroutine should
* not be
called as a function.
2008-09-06 Steven G. Kargl <kargls@comcast.net>
PR fortran/33229
* gfortran.dg/intrinsic_subroutine.f90: New test.
From-SVN: r140061
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/intrinsic_subroutine.f90 | 7 |
4 files changed, 31 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2008990..e3f2dcd 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2008-09-06 Steven G. Kargl <kargls@comcast.net> + + PR fortran/33229 + * resolve.c (resolve_function): An intrinsic subroutine should not be + called as a function. + 2008-09-05 Daniel Kraft <d@domob.eu> PR fortran/35837 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index e28d704..485d331 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -2204,6 +2204,16 @@ resolve_function (gfc_expr *expr) if (expr->symtree) sym = expr->symtree->n.sym; + if (sym && sym->attr.intrinsic + && !gfc_find_function (sym->name) + && gfc_find_subroutine (sym->name) + && sym->attr.function) + { + gfc_error ("Intrinsic subroutine '%s' used as " + "a function at %L", sym->name, &expr->where); + return FAILURE; + } + if (sym && sym->attr.flavor == FL_VARIABLE) { gfc_error ("'%s' at %L is not a function", sym->name, &expr->where); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9ea373a..c094425 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-09-06 Steven G. Kargl <kargls@comcast.net> + + PR fortran/33229 + * gfortran.dg/intrinsic_subroutine.f90: New test. + 2008-09-06 Richard Sandiford <rdsandiford@googlemail.com> * gcc.target/mips/mips.exp (dg-mips-options): Make @@ -26,8 +31,8 @@ 2008-09-05 Douglas Gregor <doug.gregor@gmail.com> - PR c++/37342 - * g++.dg/other/canon-37342.C: New. + PR c++/37342 + * g++.dg/other/canon-37342.C: New. 2008-09-05 Joseph Myers <joseph@codesourcery.com> @@ -213,7 +218,7 @@ 2008-09-02 Victor Kaplansky <victork@il.ibm.com> * gcc.dg/fastmath-2.c: New. - + 2008-09-02 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/37095 diff --git a/gcc/testsuite/gfortran.dg/intrinsic_subroutine.f90 b/gcc/testsuite/gfortran.dg/intrinsic_subroutine.f90 new file mode 100644 index 0000000..103ff3b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/intrinsic_subroutine.f90 @@ -0,0 +1,7 @@ +! { dg-do compile } +! PR 33229 +implicit none +intrinsic cpu_time +real :: time +print *, CPU_TIME(TIME) ! { dg-error "Intrinsic subroutine" } +end |