* [Bug fortran/48360] [4.6/4.7 Regression] ICE on array assignment statement with allocatable LHS
2011-03-30 11:20 [Bug fortran/48360] New: ICE on array assignment statement with allocatable LHS krefson at googlemail dot com
@ 2011-03-30 12:39 ` burnus at gcc dot gnu.org
2011-03-31 10:39 ` jakub at gcc dot gnu.org
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: burnus at gcc dot gnu.org @ 2011-03-30 12:39 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48360
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |ice-on-valid-code
CC| |burnus at gcc dot gnu.org,
| |pault at gcc dot gnu.org
Target Milestone|--- |4.6.1
Summary|ICE on array assignment |[4.6/4.7 Regression] ICE on
|statement with allocatable |array assignment statement
|LHS |with allocatable LHS
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-03-30 11:55:51 UTC ---
(In reply to comment #0)
> Disabling the possibility of "allocate-on-assignment" by changing
[...]
Or simply use: -fno-realloc-lhs
With my - admittedly not clean - tree, that gives the following valgrind
output:
Invalid read of size 8
at 0x56B13A: get_std_lbound (trans-array.c:6825)
by 0x573E88: gfc_alloc_allocatable_for_assignment (trans-array.c:7083)
by 0x58EBDB: gfc_trans_assignment_1 (trans-expr.c:6186)
That's the lines:
6822 else if (expr->expr_type == EXPR_VARIABLE)
6823 {
6824 tmp = TREE_TYPE (expr->symtree->n.sym->backend_decl);
6825 return GFC_TYPE_ARRAY_LBOUND(tmp, dim);
The issue is that
TYPE_LANG_SPECIFIC (tmp) == tmp->type.lang_specific == NULL
and, thus, accessing TYPE_LANG_SPECIFIC(node)->lbound[dim] gives an ICE.
The issue is that for "mmv%h0" the proper backend is not:
expr->symtree->n.sym->backend_decl
but rather
expr->ref->u.c->component->backend_decl
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/48360] [4.6/4.7 Regression] ICE on array assignment statement with allocatable LHS
2011-03-30 11:20 [Bug fortran/48360] New: ICE on array assignment statement with allocatable LHS krefson at googlemail dot com
2011-03-30 12:39 ` [Bug fortran/48360] [4.6/4.7 Regression] " burnus at gcc dot gnu.org
@ 2011-03-31 10:39 ` jakub at gcc dot gnu.org
2011-03-31 13:25 ` jvdelisle at gcc dot gnu.org
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-03-31 10:39 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48360
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P4
CC| |jakub at gcc dot gnu.org
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/48360] [4.6/4.7 Regression] ICE on array assignment statement with allocatable LHS
2011-03-30 11:20 [Bug fortran/48360] New: ICE on array assignment statement with allocatable LHS krefson at googlemail dot com
2011-03-30 12:39 ` [Bug fortran/48360] [4.6/4.7 Regression] " burnus at gcc dot gnu.org
2011-03-31 10:39 ` jakub at gcc dot gnu.org
@ 2011-03-31 13:25 ` jvdelisle at gcc dot gnu.org
2011-03-31 13:37 ` jvdelisle at gcc dot gnu.org
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: jvdelisle at gcc dot gnu.org @ 2011-03-31 13:25 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48360
Jerry DeLisle <jvdelisle at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jvdelisle at gcc dot
| |gnu.org
--- Comment #2 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> 2011-03-31 13:05:01 UTC ---
I am a little suspicious of this:
static int count_arglist;
+/* Pointer to an array of gfc_expr ** we operate on, plus its size
+ and counter. */
+
+static gfc_expr ***expr_array;
+static int expr_size, expr_count;
It could be getting walked on or optimized away by the optimizers. Is there
another way to do this that is less indirect or relies less on static.
Just seems too tricky. I am not looking further on this one.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/48360] [4.6/4.7 Regression] ICE on array assignment statement with allocatable LHS
2011-03-30 11:20 [Bug fortran/48360] New: ICE on array assignment statement with allocatable LHS krefson at googlemail dot com
` (2 preceding siblings ...)
2011-03-31 13:25 ` jvdelisle at gcc dot gnu.org
@ 2011-03-31 13:37 ` jvdelisle at gcc dot gnu.org
2011-04-01 17:54 ` jvdelisle at gcc dot gnu.org
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: jvdelisle at gcc dot gnu.org @ 2011-03-31 13:37 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48360
--- Comment #3 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> 2011-03-31 13:06:06 UTC ---
Disregard 2, wrong PR
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/48360] [4.6/4.7 Regression] ICE on array assignment statement with allocatable LHS
2011-03-30 11:20 [Bug fortran/48360] New: ICE on array assignment statement with allocatable LHS krefson at googlemail dot com
` (3 preceding siblings ...)
2011-03-31 13:37 ` jvdelisle at gcc dot gnu.org
@ 2011-04-01 17:54 ` jvdelisle at gcc dot gnu.org
2011-04-08 4:17 ` pault at gcc dot gnu.org
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: jvdelisle at gcc dot gnu.org @ 2011-04-01 17:54 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48360
--- Comment #4 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> 2011-04-01 17:54:06 UTC ---
This regression was caused by r167220.
Revision 167220 - (view) (download) (annotate) - [select for diffs]
Modified Sun Nov 28 13:47:26 2010 UTC (4 months ago) by pault
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/48360] [4.6/4.7 Regression] ICE on array assignment statement with allocatable LHS
2011-03-30 11:20 [Bug fortran/48360] New: ICE on array assignment statement with allocatable LHS krefson at googlemail dot com
` (4 preceding siblings ...)
2011-04-01 17:54 ` jvdelisle at gcc dot gnu.org
@ 2011-04-08 4:17 ` pault at gcc dot gnu.org
2011-04-12 19:15 ` pault at gcc dot gnu.org
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu.org @ 2011-04-08 4:17 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48360
Paul Thomas <pault at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2011.04.08 04:16:46
Ever Confirmed|0 |1
--- Comment #5 from Paul Thomas <pault at gcc dot gnu.org> 2011-04-08 04:16:46 UTC ---
This is obviously mine :-)
This fixes it but I suspect that a few more conditions (no ARRAY_ELEMENT for
example) will be needed for it to be correct.
Index: gcc/fortran/trans-array.c
===================================================================
*** gcc/fortran/trans-array.c (revision 171573)
--- gcc/fortran/trans-array.c (working copy)
*************** get_std_lbound (gfc_expr *expr, tree des
*** 6707,6712 ****
--- 6707,6713 ----
tree stride;
tree cond, cond1, cond3, cond4;
tree tmp;
+ gfc_ref *ref;
if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc)))
{
tmp = gfc_rank_cst[dim];
*************** get_std_lbound (gfc_expr *expr, tree des
*** 6740,6745 ****
--- 6741,6752 ----
else if (expr->expr_type == EXPR_VARIABLE)
{
tmp = TREE_TYPE (expr->symtree->n.sym->backend_decl);
+ for (ref = expr->ref; ref; ref = ref->next)
+ {
+ if (ref->type == REF_COMPONENT
+ && ref->u.c.component->as)
+ tmp = TREE_TYPE (ref->u.c.component->backend_decl);
+ }
return GFC_TYPE_ARRAY_LBOUND(tmp, dim);
}
else if (expr->expr_type == EXPR_FUNCTION)
Paul
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/48360] [4.6/4.7 Regression] ICE on array assignment statement with allocatable LHS
2011-03-30 11:20 [Bug fortran/48360] New: ICE on array assignment statement with allocatable LHS krefson at googlemail dot com
` (5 preceding siblings ...)
2011-04-08 4:17 ` pault at gcc dot gnu.org
@ 2011-04-12 19:15 ` pault at gcc dot gnu.org
2011-04-13 18:38 ` pault at gcc dot gnu.org
2011-04-13 19:20 ` pault at gcc dot gnu.org
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu.org @ 2011-04-12 19:15 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48360
--- Comment #6 from Paul Thomas <pault at gcc dot gnu.org> 2011-04-12 19:14:52 UTC ---
Author: pault
Date: Tue Apr 12 19:14:49 2011
New Revision: 172339
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=172339
Log:
2011-04-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48360
PR fortran/48456
* trans-array.c (get_std_lbound): For derived type variables
return array valued component lbound.
2011-04-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48360
PR fortran/48456
* gfortran.dg/realloc_on_assign_6.f03: New test.
Added:
trunk/gcc/testsuite/gfortran.dg/realloc_on_assign_6.f03
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-array.c
trunk/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/48360] [4.6/4.7 Regression] ICE on array assignment statement with allocatable LHS
2011-03-30 11:20 [Bug fortran/48360] New: ICE on array assignment statement with allocatable LHS krefson at googlemail dot com
` (6 preceding siblings ...)
2011-04-12 19:15 ` pault at gcc dot gnu.org
@ 2011-04-13 18:38 ` pault at gcc dot gnu.org
2011-04-13 19:20 ` pault at gcc dot gnu.org
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu.org @ 2011-04-13 18:38 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48360
--- Comment #7 from Paul Thomas <pault at gcc dot gnu.org> 2011-04-13 18:38:21 UTC ---
Author: pault
Date: Wed Apr 13 18:38:17 2011
New Revision: 172390
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=172390
Log:
2011-04-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48360
PR fortran/48456
* trans-array.c (get_std_lbound): For derived type variables
return array valued component lbound.
2011-04-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48360
PR fortran/48456
* gfortran.dg/realloc_on_assign_6.f03: New test.
Added:
branches/gcc-4_6-branch/gcc/testsuite/gfortran.dg/realloc_on_assign_6.f03
Modified:
branches/gcc-4_6-branch/gcc/fortran/ChangeLog
branches/gcc-4_6-branch/gcc/fortran/trans-array.c
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug fortran/48360] [4.6/4.7 Regression] ICE on array assignment statement with allocatable LHS
2011-03-30 11:20 [Bug fortran/48360] New: ICE on array assignment statement with allocatable LHS krefson at googlemail dot com
` (7 preceding siblings ...)
2011-04-13 18:38 ` pault at gcc dot gnu.org
@ 2011-04-13 19:20 ` pault at gcc dot gnu.org
8 siblings, 0 replies; 10+ messages in thread
From: pault at gcc dot gnu.org @ 2011-04-13 19:20 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48360
Paul Thomas <pault at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
--- Comment #8 from Paul Thomas <pault at gcc dot gnu.org> 2011-04-13 19:20:12 UTC ---
Fixed on trunk and 4.6.
Thanks for the report
Paul
^ permalink raw reply [flat|nested] 10+ messages in thread