[Bug fortran/33636] Rejects valid use of vector subscript in derived type parameter
fxcoudert at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Wed Oct 10 11:23:00 GMT 2007
------- Comment #3 from fxcoudert at gcc dot gnu dot org 2007-10-10 11:23 -------
The problem is that we try simplification in find_array_section() because the
vector subscript is EXPR_ARRAY, which is not necessarily constant (in this
case, the values in the constructor depend on variable i). So, the check for
constantness needs to call gfc_is_constant_expr(), as in the patch below.
(This was hidden on 64-bit machines because there, expressions "i", "i+1" and
"i-1" have to be converted to integer(8), which means the vector subscript
isn't an EXPR_ARRAY but and EXPR_FUNCTION. Thus, we bailed out of the
simplification business.)
Index: expr.c
===================================================================
--- expr.c (revision 129054)
+++ expr.c (working copy)
@@ -1165,7 +1165,7 @@ find_array_section (gfc_expr *expr, gfc_
{
gcc_assert (begin);
- if (begin->expr_type != EXPR_ARRAY)
+ if (begin->expr_type != EXPR_ARRAY || !gfc_is_constant_expr (begin))
{
t = FAILURE;
goto cleanup;
--
fxcoudert at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |fxcoudert at gcc dot gnu dot
|dot org |org
Status|NEW |ASSIGNED
Last reconfirmed|2007-10-03 12:27:28 |2007-10-10 11:23:10
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33636
More information about the Gcc-bugs
mailing list