[Bug fortran/42804] ICE with -fcheck=bounds and type bound procedure call on array element

2010-01-19 Thread ian_harvey at bigpond dot com
--- Comment #1 from ian_harvey at bigpond dot com 2010-01-19 14:06 --- Created an attachment (id=19655) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19655action=view) Source code that demonstrates the ICE -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42804

[Bug fortran/42804] ICE with -fcheck=bounds and type bound procedure call on array element

2010-01-19 Thread burnus at gcc dot gnu dot org
--- Comment #2 from burnus at gcc dot gnu dot org 2010-01-19 15:41 --- Confirm. Backtrace: Program received signal SIGSEGV, Segmentation fault. 0x0053e011 in gfc_trans_runtime_error_vararg (error=value optimized out, where=0x13ea980, msgid=0x13ea3f0 Index '%ld' of dimension

[Bug fortran/42804] ICE with -fcheck=bounds and type bound procedure call on array element

2010-01-19 Thread burnus at gcc dot gnu dot org
--- Comment #3 from burnus at gcc dot gnu dot org 2010-01-19 15:56 --- The problem is that e(xpr)-where-lb == NULL. The flow is: gfc_conv_procedure_call - gfc_conv_derived_to_class - gfc_conv_expr_reference - gfc_conv_variable etc. I wonder whether the problem is that the CLASS struct

[Bug fortran/42804] ICE with -fcheck=bounds and type bound procedure call on array element

2010-01-19 Thread janus at gcc dot gnu dot org
--- Comment #4 from janus at gcc dot gnu dot org 2010-01-19 16:35 --- If one replaces the TBP call by a direct call to the subroutine, like this: call a_proc(arr(i),ierr) then the ICE goes away (of course a_proc must be public for this to work). This means it is not a problem of the

[Bug fortran/42804] ICE with -fcheck=bounds and type bound procedure call on array element

2010-01-19 Thread janus at gcc dot gnu dot org
--- Comment #5 from janus at gcc dot gnu dot org 2010-01-19 16:39 --- Another observation: If I remove the CLASS argument, give the procedure the NOPASS attribute and call it like this, the ICE also goes away. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42804

[Bug fortran/42804] ICE with -fcheck=bounds and type bound procedure call on array element

2010-01-19 Thread janus at gcc dot gnu dot org
--- Comment #6 from janus at gcc dot gnu dot org 2010-01-19 17:11 --- (In reply to comment #3) The problem is that e(xpr)-where-lb == NULL. Exactly. What's important is that the expression e here is the passed-object argument. Now the problem really is that when we construct this

[Bug fortran/42804] ICE with -fcheck=bounds and type bound procedure call on array element

2010-01-19 Thread janus at gcc dot gnu dot org
--- Comment #7 from janus at gcc dot gnu dot org 2010-01-19 17:24 --- We probably have the same trouble with procedure pointer components, which can also have passed-object arguments. However, when trying to construct an analogous PPC test case, I came across another bug. Here is the

[Bug fortran/42804] ICE with -fcheck=bounds and type bound procedure call on array element

2010-01-19 Thread janus at gcc dot gnu dot org
--- Comment #8 from janus at gcc dot gnu dot org 2010-01-19 17:46 --- Here is the fix for PPCs, curing both the must be scalar error from the last comment as well as the missing-locus ICE (which, as expected, did appear also for PPCs after the other thing was fixed): Index:

[Bug fortran/42804] ICE with -fcheck=bounds and type bound procedure call on array element

2010-01-19 Thread janus at gcc dot gnu dot org
--- Comment #9 from janus at gcc dot gnu dot org 2010-01-19 22:21 --- Subject: Bug 42804 Author: janus Date: Tue Jan 19 22:21:35 2010 New Revision: 156049 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=156049 Log: gcc/fortran/ 2010-01-19 Janus Weil ja...@gcc.gnu.org PR

[Bug fortran/42804] ICE with -fcheck=bounds and type bound procedure call on array element

2010-01-19 Thread janus at gcc dot gnu dot org
--- Comment #10 from janus at gcc dot gnu dot org 2010-01-19 22:23 --- Fixed with r156049. Closing. Thanks for the report! -- janus at gcc dot gnu dot org changed: What|Removed |Added