aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/expr.c
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2022-01-13 21:50:45 +0100
committerHarald Anlauf <anlauf@gmx.de>2022-01-14 19:16:04 +0100
commita4a8ae123cd70188e4b4bf5e288a84e0a76fb0fd (patch)
tree46dec75bfe04b8963eacf46225c147cb116bbbc2 /gcc/fortran/expr.c
parent72332337e3d8acbb21398b8d123f1bfe77a8327e (diff)
downloadgcc-a4a8ae123cd70188e4b4bf5e288a84e0a76fb0fd.zip
gcc-a4a8ae123cd70188e4b4bf5e288a84e0a76fb0fd.tar.gz
gcc-a4a8ae123cd70188e4b4bf5e288a84e0a76fb0fd.tar.bz2
Fortran: fix ICE overloading elemental intrinsics
gcc/fortran/ChangeLog: PR fortran/103782 * expr.c (gfc_simplify_expr): Adjust logic for when to scalarize a call of an intrinsic which may have been overloaded. gcc/testsuite/ChangeLog: PR fortran/103782 * gfortran.dg/overload_4.f90: New test.
Diffstat (limited to 'gcc/fortran/expr.c')
-rw-r--r--gcc/fortran/expr.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index a87686d..20b88a8 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -2219,10 +2219,9 @@ gfc_simplify_expr (gfc_expr *p, int type)
&& gfc_intrinsic_func_interface (p, 1) == MATCH_ERROR)
return false;
- if (p->expr_type == EXPR_FUNCTION)
+ if (p->symtree && (p->value.function.isym || p->ts.type == BT_UNKNOWN))
{
- if (p->symtree)
- isym = gfc_find_function (p->symtree->n.sym->name);
+ isym = gfc_find_function (p->symtree->n.sym->name);
if (isym && isym->elemental)
scalarize_intrinsic_call (p, false);
}