public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug fortran/61881] New: ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) @ 2014-07-22 15:39 burnus at gcc dot gnu.org 2014-07-22 18:09 ` [Bug fortran/61881] " dominiq at lps dot ens.fr ` (5 more replies) 0 siblings, 6 replies; 7+ messages in thread From: burnus at gcc dot gnu.org @ 2014-07-22 15:39 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61881 Bug ID: 61881 Summary: ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) Product: gcc Version: 4.10.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org CC: pault at gcc dot gnu.org The following code uses assumed-rank and CLASS(*) and ICEs. Such a code might get used for GCC's OpenACC implementation. foo.f90:3:0: internal compiler error: in fold_convert_loc, at fold-const.c:2074 call test(4) ^ 0x87556c fold_convert_loc(unsigned int, tree_node*, tree_node*) ../../gcc/fold-const.c:2074 0x69f570 gfc_conv_intrinsic_to_class(gfc_se*, gfc_expr*, gfc_typespec) ../../gcc/fortran/trans-expr.c:592 program test implicit none call test(4) call test([4]) contains subroutine test(a) class(*), dimension(..) :: a end subroutine test end ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/61881] ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) 2014-07-22 15:39 [Bug fortran/61881] New: ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) burnus at gcc dot gnu.org @ 2014-07-22 18:09 ` dominiq at lps dot ens.fr 2014-07-23 6:26 ` burnus at gcc dot gnu.org ` (4 subsequent siblings) 5 siblings, 0 replies; 7+ messages in thread From: dominiq at lps dot ens.fr @ 2014-07-22 18:09 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61881 Dominique d'Humieres <dominiq at lps dot ens.fr> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2014-07-22 Ever confirmed|0 |1 --- Comment #1 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- After deletion the line program test I get the ICE which at the same place as the tests in pr49802 comments 5 and 8. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/61881] ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) 2014-07-22 15:39 [Bug fortran/61881] New: ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) burnus at gcc dot gnu.org 2014-07-22 18:09 ` [Bug fortran/61881] " dominiq at lps dot ens.fr @ 2014-07-23 6:26 ` burnus at gcc dot gnu.org 2014-07-23 6:40 ` burnus at gcc dot gnu.org ` (3 subsequent siblings) 5 siblings, 0 replies; 7+ messages in thread From: burnus at gcc dot gnu.org @ 2014-07-23 6:26 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61881 --- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> --- Draft patch: --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -591,4 +591,10 @@ gfc_conv_intrinsic_to_class (gfc_se *parmse, gfc_expr *e, gfc_conv_expr_reference (parmse, e); - tmp = fold_convert (TREE_TYPE (ctree), parmse->expr); - gfc_add_modify (&parmse->pre, ctree, tmp); + if (class_ts.u.derived->components->as && e->rank == 0) + tmp = gfc_conv_scalar_to_descriptor (parmse, parmse->expr, + gfc_expr_attr (e)); + else + { + tmp = fold_convert (TREE_TYPE (ctree), parmse->expr); + gfc_add_modify (&parmse->pre, ctree, tmp); + } } @@ -599,3 +605,10 @@ gfc_conv_intrinsic_to_class (gfc_se *parmse, gfc_expr *e, gfc_conv_expr_descriptor (parmse, e); - gfc_add_modify (&parmse->pre, ctree, parmse->expr); + if (class_ts.u.derived->components->as->rank != e->rank) + { + tmp = fold_build1_loc (input_location, VIEW_CONVERT_EXPR, + TREE_TYPE (ctree), parmse->expr); + gfc_add_expr_to_block (&parmse->pre, tmp); + } + else + gfc_add_modify (&parmse->pre, ctree, parmse->expr); } ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/61881] ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) 2014-07-22 15:39 [Bug fortran/61881] New: ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) burnus at gcc dot gnu.org 2014-07-22 18:09 ` [Bug fortran/61881] " dominiq at lps dot ens.fr 2014-07-23 6:26 ` burnus at gcc dot gnu.org @ 2014-07-23 6:40 ` burnus at gcc dot gnu.org 2014-07-26 17:57 ` burnus at gcc dot gnu.org ` (2 subsequent siblings) 5 siblings, 0 replies; 7+ messages in thread From: burnus at gcc dot gnu.org @ 2014-07-23 6:40 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61881 --- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> --- The draft patch does not fully work: a) "class._data = desc" assignment is missing tmp = gfc_build_addr_expr (NULL_TREE, tmp); plus the moved gfc_add_modify works in the scalar case; for the array case, one additionally needs a prior gfc_conv_class_to_class call. b) It mishandles class(*) :: foo[*] dummy arguments for which wrongly an array descriptor is passed, one needs an additional && class_ts.u.derived->components->as->type == AS_ASSUMED_RANK ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/61881] ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) 2014-07-22 15:39 [Bug fortran/61881] New: ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) burnus at gcc dot gnu.org ` (2 preceding siblings ...) 2014-07-23 6:40 ` burnus at gcc dot gnu.org @ 2014-07-26 17:57 ` burnus at gcc dot gnu.org 2014-07-26 18:00 ` burnus at gcc dot gnu.org 2014-09-03 6:42 ` burnus at gcc dot gnu.org 5 siblings, 0 replies; 7+ messages in thread From: burnus at gcc dot gnu.org @ 2014-07-26 17:57 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61881 --- Comment #4 from Tobias Burnus <burnus at gcc dot gnu.org> --- Author: burnus Date: Sat Jul 26 17:56:39 2014 New Revision: 213085 URL: https://gcc.gnu.org/viewcvs?rev=213085&root=gcc&view=rev Log: Follow up to r213079. 2014-07-26 Tobias Burnus <burnus@net-b.de> PR fortran/61881 PR fortran/61888 PR fortran/57305 * intrinsic.texi (SIZEOF): Document changed behavior for polymorphic arrays. Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/intrinsic.texi trunk/gcc/testsuite/ChangeLog ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/61881] ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) 2014-07-22 15:39 [Bug fortran/61881] New: ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) burnus at gcc dot gnu.org ` (3 preceding siblings ...) 2014-07-26 17:57 ` burnus at gcc dot gnu.org @ 2014-07-26 18:00 ` burnus at gcc dot gnu.org 2014-09-03 6:42 ` burnus at gcc dot gnu.org 5 siblings, 0 replies; 7+ messages in thread From: burnus at gcc dot gnu.org @ 2014-07-26 18:00 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61881 Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #5 from Tobias Burnus <burnus at gcc dot gnu.org> --- FIXED on the GCC 5 trunk (via r213079). ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/61881] ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) 2014-07-22 15:39 [Bug fortran/61881] New: ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) burnus at gcc dot gnu.org ` (4 preceding siblings ...) 2014-07-26 18:00 ` burnus at gcc dot gnu.org @ 2014-09-03 6:42 ` burnus at gcc dot gnu.org 5 siblings, 0 replies; 7+ messages in thread From: burnus at gcc dot gnu.org @ 2014-09-03 6:42 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61881 --- Comment #6 from Tobias Burnus <burnus at gcc dot gnu.org> --- Author: burnus Date: Wed Sep 3 06:41:37 2014 New Revision: 214843 URL: https://gcc.gnu.org/viewcvs?rev=214843&root=gcc&view=rev Log: Missed that file in r213079 of 2014-07-26 2014-09-03 Tobias Burnus <burnus@net-b.de> PR fortran/61881 PR fortran/61888 PR fortran/57305 * gfortran.dg/sizeof_4.f90: New. Added: trunk/gcc/testsuite/gfortran.dg/sizeof_4.f90 Modified: trunk/gcc/testsuite/ChangeLog ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-09-03 6:42 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2014-07-22 15:39 [Bug fortran/61881] New: ICE in gfc_conv_intrinsic_to_class with assumed-rank CLASS(*) burnus at gcc dot gnu.org 2014-07-22 18:09 ` [Bug fortran/61881] " dominiq at lps dot ens.fr 2014-07-23 6:26 ` burnus at gcc dot gnu.org 2014-07-23 6:40 ` burnus at gcc dot gnu.org 2014-07-26 17:57 ` burnus at gcc dot gnu.org 2014-07-26 18:00 ` burnus at gcc dot gnu.org 2014-09-03 6:42 ` burnus at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).