From patchwork Thu Jan 19 19:23:58 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [Fortran] PR 51904 - with ICE with SIZE intrinsic X-Patchwork-Submitter: Tobias Burnus X-Patchwork-Id: 136895 Message-Id: <4F186DCE.7000506@net-b.de> To: gcc patches , gfortran Date: Thu, 19 Jan 2012 20:23:58 +0100 From: Tobias Burnus List-Id: Seemingly, resolve and friends are confused if there is no symtree - thus set it. Build and regtested on x86-64-linux. OK for the trunk and the 4.6 branch? (It's a regression.) Tobias 2012-01-19 Tobias Burnus PR fortran/51904 *expr.c (gfc_build_intrinsic_call): Also set the symtree. 2012-01-19 Tobias Burnus PR fortran/51904 * gfortran.dg/intrinsic_size_2.f90: New. diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 8f04c73..7cea780 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -4519,6 +4519,11 @@ gfc_build_intrinsic_call (const char* name, locus where, unsigned numarg, ...) result->value.function.name = name; result->value.function.isym = isym; + result->symtree = gfc_find_symtree (gfc_current_ns->sym_root, name); + gcc_assert (result->symtree + && (result->symtree->n.sym->attr.flavor == FL_PROCEDURE + || result->symtree->n.sym->attr.flavor == FL_UNKNOWN)); + va_start (ap, numarg); atail = NULL; for (i = 0; i < numarg; ++i) --- /dev/null 2012-01-19 08:39:17.883655782 +0100 +++ gcc/gcc/testsuite/gfortran.dg/intrinsic_size_2.f90 2012-01-19 20:14:12.000000000 +0100 @@ -0,0 +1,17 @@ +! { dg-do compile } +! +! PR fortran/51904 +! +! Contributed by David Sagan. +! + +call qp_draw_polyline_basic([1.0,2.0]) +contains +subroutine qp_draw_polyline_basic (x) + implicit none + real :: x(:), f + integer :: i + f = 0 + print *, size(f*x) +end subroutine +end