aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorSteven G. Kargl <kargls@comcast.net>2008-09-06 17:11:29 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2008-09-06 17:11:29 +0200
commit2c68bc89b7f04ee6e599afb8a75734641e5a5038 (patch)
tree67cb2668f719844643b9fcb87857334f0174cdfe /gcc/fortran
parent9731c4a34803475968046006076f07d0fe5cd16c (diff)
downloadgcc-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
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/resolve.c10
2 files changed, 16 insertions, 0 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);