* [Bug fortran/44735] ICE on FORALL with character array pointer
[not found] <bug-44735-4@http.gcc.gnu.org/bugzilla/>
@ 2010-12-29 22:18 ` tkoenig at gcc dot gnu.org
2013-03-17 15:25 ` tkoenig at gcc dot gnu.org
` (4 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: tkoenig at gcc dot gnu.org @ 2010-12-29 22:18 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44735
Thomas Koenig <tkoenig at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |pault at gcc dot gnu.org,
| |tkoenig at gcc dot gnu.org
Known to fail| |
--- Comment #3 from Thomas Koenig <tkoenig at gcc dot gnu.org> 2010-12-29 22:18:34 UTC ---
Hi Paul,
The problem may well be where Joe pointed it out.
In
if (expr1->ts.type == BT_CHARACTER && expr1->ts.u.cl->length)
{
if (!expr1->ts.u.cl->backend_decl)
{
gfc_se tse;
gfc_init_se (&tse, NULL);
gfc_conv_expr (&tse, expr1->ts.u.cl->length);
expr1->ts.u.cl->backend_decl = tse.expr;
}
type = gfc_get_character_type_len (gfc_default_character_kind,
expr1->ts.u.cl->backend_decl);
}
the fact that expr1 has a substring reference is not taken into account,
so it might be necessary to calculate the length of the string
from expr1->ref->u.ss.end - expr1->ref.u.ss.start + 1. You may have
to take care not to calculate any functions twice, though.
Hope this helps a little bit.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug fortran/44735] ICE on FORALL with character array pointer
[not found] <bug-44735-4@http.gcc.gnu.org/bugzilla/>
2010-12-29 22:18 ` tkoenig at gcc dot gnu.org
@ 2013-03-17 15:25 ` tkoenig at gcc dot gnu.org
2014-08-29 9:44 ` dominiq at lps dot ens.fr
` (3 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: tkoenig at gcc dot gnu.org @ 2013-03-17 15:25 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44735
Thomas Koenig <tkoenig at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed|2010-07-01 06:21:38 |2013-03-17 15:00
Known to fail| |4.9.0
--- Comment #4 from Thomas Koenig <tkoenig at gcc dot gnu.org> 2013-03-17 15:24:44 UTC ---
Still fails:
ig25@linux-fd1f:~/Krempel/Forall> valgrind
/home/ig25/lib/gcc/x86_64-unknown-linux-gnu/4.9.0/f951 bug.f90
==24599== Memcheck, a memory error detector
==24599== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==24599== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==24599== Command: /home/ig25/lib/gcc/x86_64-unknown-linux-gnu/4.9.0/f951
bug.f90
==24599==
bug==24599== Invalid read of size 2
==24599== at 0x786F01: fold_convert_loc(unsigned int, tree_node*,
tree_node*) (tree.h:3797)
==24599== by 0x5FE16F: allocate_temp_for_forall_nest_1(tree_node*,
tree_node*, stmtblock_t*, tree_node**) (trans-stmt.c:3270)
==24599== by 0x5FEA47: gfc_trans_assign_need_temp(gfc_expr*, gfc_expr*,
tree_node*, bool, forall_info*, stmtblock_t*) (trans-stmt.c:3391)
==24599== by 0x602DE0: gfc_trans_forall_1(gfc_code*, forall_info*)
(trans-stmt.c:3868)
==24599== by 0x5A6847: trans_code(gfc_code*, tree_node*) (trans.c:1569)
==24599== by 0x5CD8AE: gfc_generate_function_code(gfc_namespace*)
(trans-decl.c:5397)
==24599== by 0x565800: gfc_parse_file() (parse.c:4468)
==24599== by 0x5A20E5: gfc_be_parse_file() (f95-lang.c:189)
==24599== by 0x94D725: compile_file() (toplev.c:543)
==24599== by 0x94F5A9: toplev_main(int, char**) (toplev.c:1876)
==24599== by 0x5A38454: (below main) (in /lib64/libc-2.15.so)
==24599== Address 0x0 is not stack'd, malloc'd or (recently) free'd
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug fortran/44735] ICE on FORALL with character array pointer
[not found] <bug-44735-4@http.gcc.gnu.org/bugzilla/>
2010-12-29 22:18 ` tkoenig at gcc dot gnu.org
2013-03-17 15:25 ` tkoenig at gcc dot gnu.org
@ 2014-08-29 9:44 ` dominiq at lps dot ens.fr
2014-08-31 14:37 ` tkoenig at gcc dot gnu.org
` (2 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: dominiq at lps dot ens.fr @ 2014-08-29 9:44 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44735
--- Comment #5 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
This PR is fixed by the patch at
https://gcc.gnu.org/ml/fortran/2014-08/msg00114.html. Test that can be
executed:
subroutine bug
character(len=10) :: F_string
character(len=1), dimension(:), pointer :: p_chars
allocate(p_chars(10))
p_chars = ['a','b','c','d','e','f','g','h','i','j']
forall (i=1:len(F_string))
F_string(i:i) = p_chars(i)
end forall
print *, F_string
deallocate(p_chars)
end subroutine bug
call bug()
end
[Book15] f90/bug% a.out
abcdefghij
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug fortran/44735] ICE on FORALL with character array pointer
[not found] <bug-44735-4@http.gcc.gnu.org/bugzilla/>
` (2 preceding siblings ...)
2014-08-29 9:44 ` dominiq at lps dot ens.fr
@ 2014-08-31 14:37 ` tkoenig at gcc dot gnu.org
2015-05-04 14:27 ` fxcoudert at gcc dot gnu.org
2015-05-04 14:31 ` fxcoudert at gcc dot gnu.org
5 siblings, 0 replies; 9+ messages in thread
From: tkoenig at gcc dot gnu.org @ 2014-08-31 14:37 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44735
--- Comment #7 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
The fix looks good.
Commit the test case from comment #5 and close?
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug fortran/44735] ICE on FORALL with character array pointer
[not found] <bug-44735-4@http.gcc.gnu.org/bugzilla/>
` (3 preceding siblings ...)
2014-08-31 14:37 ` tkoenig at gcc dot gnu.org
@ 2015-05-04 14:27 ` fxcoudert at gcc dot gnu.org
2015-05-04 14:31 ` fxcoudert at gcc dot gnu.org
5 siblings, 0 replies; 9+ messages in thread
From: fxcoudert at gcc dot gnu.org @ 2015-05-04 14:27 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44735
--- Comment #8 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Author: fxcoudert
Date: Mon May 4 14:27:14 2015
New Revision: 222766
URL: https://gcc.gnu.org/viewcvs?rev=222766&root=gcc&view=rev
Log:
PR fortran/44735
* gfortran.dg/pr44735.f90: New test.
Added:
trunk/gcc/testsuite/gfortran.dg/pr44735.f90
Modified:
trunk/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug fortran/44735] ICE on FORALL with character array pointer
[not found] <bug-44735-4@http.gcc.gnu.org/bugzilla/>
` (4 preceding siblings ...)
2015-05-04 14:27 ` fxcoudert at gcc dot gnu.org
@ 2015-05-04 14:31 ` fxcoudert at gcc dot gnu.org
5 siblings, 0 replies; 9+ messages in thread
From: fxcoudert at gcc dot gnu.org @ 2015-05-04 14:31 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44735
Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |fxcoudert at gcc dot gnu.org
Resolution|--- |FIXED
Target Milestone|--- |5.0
--- Comment #9 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Testcase committed, closing as FIXED.
^ permalink raw reply [flat|nested] 9+ messages in thread