This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] fortran/30207 -- Fix a WHERE and array section problem


The attached patch has been built and tested on i386-*-freebsd.

It short circuits the dependency checking on arrays in a WHERE
statement (and maybe others) when an array section is present.
That is, 

   integer :: z(4) = (/1,1,-1,-1/)
   where (z < 0) z(:) = 1

will lead to an ICE gfc_dep_resolver.  The short circuiting causes
the allocation of temporary array to hold the mask from the z < 0
conditional.  Note the -fdump-tree-original code generated from the
above is quite ugly in comparison to 

   integer :: z(4) = (/1,1,-1,-1/)
   where (z < 0) z = 1

There may be a better way to fix this problem.  Thus, the CC to
Roger, who wrote gfc_dep_resolver.


2006-12-13  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/30207
	* fortran/dependency.c (gfc_dep_resolver): Short circuit dependency
	checking with an array section.

	* gfortran.fortran-torture/execute/where21.f90: New test.
-- 
Steve

Attachment: depend.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]