[Bug fortran/44735] ICE on FORALL with character array pointer

2015-05-04 Thread fxcoudert at gcc dot gnu.org
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=222766root=gccview=rev
Log:
PR fortran/44735
* gfortran.dg/pr44735.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/pr44735.f90
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug fortran/44735] ICE on FORALL with character array pointer

2015-05-04 Thread fxcoudert at gcc dot gnu.org
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.


[Bug fortran/44735] ICE on FORALL with character array pointer

2014-08-31 Thread tkoenig at gcc dot gnu.org
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?


[Bug fortran/44735] ICE on FORALL with character array pointer

2014-08-30 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44735

--- Comment #6 from Tobias Burnus burnus at gcc dot gnu.org ---
Author: burnus
Date: Sat Aug 30 18:47:04 2014
New Revision: 214757

URL: https://gcc.gnu.org/viewcvs?rev=214757root=gccview=rev
Log:
2014-08-30  Tobias Burnus  bur...@net-b.de

PR fortran/62278
PR fortran/44735
PR fortran/60593
* dependency.c (gfc_check_dependency): Allow for optimizations
in the pointer-alias check.


Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/dependency.c


[Bug fortran/44735] ICE on FORALL with character array pointer

2014-08-29 Thread dominiq at lps dot ens.fr
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


[Bug fortran/44735] ICE on FORALL with character array pointer

2013-03-17 Thread tkoenig at gcc dot gnu.org


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


[Bug fortran/44735] ICE on FORALL with character array pointer

2010-12-29 Thread tkoenig at gcc dot gnu.org
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.


[Bug fortran/44735] ICE on FORALL with character array pointer

2010-08-18 Thread pault at gcc dot gnu dot org


--- Comment #2 from pault at gcc dot gnu dot org  2010-08-18 18:55 ---
Created an attachment (id=21513)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21513action=view)
The beginings of a fix

This PR is going to drive me mad!

The immediate cause is a failure to get the TYPE_SIZE_UNIT to calculate the
size of the temporary needed for the assignment.  This fixes that part of the
problem but moves the focus to the assignment itself.  Something is badly wrong
with the temporary's TREE_TYPE but I do not see what it is right now.

Let this be the record of where I got to

Paul


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44735



[Bug fortran/44735] ICE on FORALL with character array pointer

2010-07-01 Thread burnus at gcc dot gnu dot org


--- Comment #1 from burnus at gcc dot gnu dot org  2010-07-01 06:21 ---
Confirm.

Valgrind shows:

==11328== Invalid read of size 8
==11328==at 0x6CBB86: fold_convert_loc (fold-const.c:1856)
==11328==by 0x58E7A3: allocate_temp_for_forall_nest_1 (trans-stmt.c:2583)
==11328==by 0x58F394: gfc_trans_assign_need_temp (trans-stmt.c:2702)
==11328==by 0x59284C: gfc_trans_forall_1 (trans-stmt.c:3158)
==11328==by 0x551DFF: trans_code (trans.c:1205)

Failing is the following line in fold-const.c
  tree orig = TREE_TYPE (arg);
which is the second argument in the following line of
allocate_temp_for_forall_nest_1:
   unit = fold_convert (gfc_array_index_type, TYPE_SIZE_UNIT (type));

It is set in gfc_trans_assign_need_temp:

  if (expr1-ts.type == BT_CHARACTER  expr1-ts.u.cl-length)
...
  else
type = gfc_typenode_for_spec (expr1-ts);

For the example, expr1-ts.type == BT_CHARACTER but expr1-ts.u.cl-length ==
NULL.

The symbol itself has:
(gdb) p *expr1-symtree-n.sym-ts.u.cl-length-value.integer._mp_d
$8 = 10

And the size is given by the expression:
(gdb) p expr1-ref-u.ss.start-expr_type 
$19 = EXPR_VARIABLE


-- 

burnus at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Keywords||ice-on-valid-code
  Known to fail||4.3.4 4.4.0 4.5.1 4.6.0
   Last reconfirmed|-00-00 00:00:00 |2010-07-01 06:21:38
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44735