[Bug fortran/55824] [OOP] ICE with ALLOCATE and SOURCE= TRANSPOSE/RESHAPE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55824 --- Comment #8 from Paul Thomas --- (In reply to Andrew Pinski from comment #7) > Seems to be working in GCC 7+. Hmmm! It seems to me to be broken from 7-branch through the current mainline. Cheers Paul
[Bug fortran/55824] [OOP] ICE with ALLOCATE and SOURCE= TRANSPOSE/RESHAPE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55824 Andrew Pinski changed: What|Removed |Added Known to work||7.1.0 Known to fail||5.5.0, 6.3.0 --- Comment #7 from Andrew Pinski --- Seems to be working in GCC 7+.
[Bug fortran/55824] [OOP] ICE with ALLOCATE and SOURCE= TRANSPOSE/RESHAPE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55824 --- Comment #6 from Dominique d'Humieres --- Related to/duplicate of pr57117? With the patch in comment 5 of pr57117, the original code in comment 0 compiles but segfault at run time, while the original test in pr57117 does not (altho there is a problem with "allocate(y(3,3), source=transpose(x))". Compiling the test in comment 4 still gives an ICE at r229494 with the patch pr55824_1.f90:4:0: allocate(vector,source=pack(array,.true.)) 1 internal compiler error: in wide_int_to_tree, at tree.c:1480
[Bug fortran/55824] [OOP] ICE with ALLOCATE and SOURCE= TRANSPOSE/RESHAPE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55824 --- Comment #5 from Damian Rouson damian at sourceryinstitute dot org --- I'm guessing the code below is another manifestation of the this bug: $ cat ice-on-pack-unlimited-polymorphic.f90 contains subroutine array_to_vector(array) class(*), allocatable :: vector(:),array(:,:) allocate(vector,source=pack(array,.true.)) end subroutine end $ gfortran ice-on-pack-unlimited-polymorphic.f90 ice-on-pack-unlimited-polymorphic.f90:4:0: allocate(vector,source=pack(array,.true.)) 1 internal compiler error: Segmentation fault: 11 ice-on-pack-unlimited-polymorphic.f90:4:0: internal compiler error: Abort trap: 6 gfortran: internal compiler error: Abort trap: 6 (program f951) Please submit a full bug report, with preprocessed source if appropriate. See https://trac.macports.org/newticket for instructions. $ gfortran --version GNU Fortran (MacPorts gcc6 6-20150621_0) 6.0.0 20150621 (experimental) ... $ sudo port select --set gcc mp-gcc5 Selecting 'mp-gcc5' for 'gcc' succeeded. 'mp-gcc5' is now active. $ gfortran ice-on-pack-unlimited-polymorphic.f90 ice-on-pack-unlimited-polymorphic.f90:4:13: allocate(vector,source=pack(array,.true.)) 1 Error: Array specification required in ALLOCATE statement at (1)
[Bug fortran/55824] [OOP] ICE with ALLOCATE and SOURCE= TRANSPOSE/RESHAPE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55824 Damian Rouson damian at sourceryinstitute dot org changed: What|Removed |Added CC||damian at sourceryinstitute dot or ||g --- Comment #4 from Damian Rouson damian at sourceryinstitute dot org --- I'm guessing the code below is another manifestation of the this bug: $ cat ice-on-pack-unlimited-polymorphic.f90 contains subroutine array_to_vector(array) class(*), allocatable :: vector(:),array(:,:) allocate(vector,source=pack(array,.true.)) end subroutine end $ gfortran ice-on-pack-unlimited-polymorphic.f90 ice-on-pack-unlimited-polymorphic.f90:4:0: allocate(vector,source=pack(array,.true.)) 1 internal compiler error: Segmentation fault: 11 ice-on-pack-unlimited-polymorphic.f90:4:0: internal compiler error: Abort trap: 6 gfortran: internal compiler error: Abort trap: 6 (program f951) Please submit a full bug report, with preprocessed source if appropriate. See https://trac.macports.org/newticket for instructions. $ gfortran --version GNU Fortran (MacPorts gcc6 6-20150621_0) 6.0.0 20150621 (experimental) ... $ sudo port select --set gcc mp-gcc5 Selecting 'mp-gcc5' for 'gcc' succeeded. 'mp-gcc5' is now active. $ gfortran ice-on-pack-unlimited-polymorphic.f90 ice-on-pack-unlimited-polymorphic.f90:4:13: allocate(vector,source=pack(array,.true.)) 1 Error: Array specification required in ALLOCATE statement at (1)
[Bug fortran/55824] [OOP] ICE with ALLOCATE and SOURCE= TRANSPOSE/RESHAPE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55824 Dominique d'Humieres dominiq at lps dot ens.fr changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2013-01-08 Ever Confirmed|0 |1 --- Comment #3 from Dominique d'Humieres dominiq at lps dot ens.fr 2013-01-08 12:37:05 UTC --- Confirmed.
[Bug fortran/55824] [OOP] ICE with ALLOCATE and SOURCE= TRANSPOSE/RESHAPE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55824 --- Comment #2 from Tobias Burnus burnus at gcc dot gnu.org 2012-12-29 10:12:46 UTC --- From trans-stmt.c's gfc_trans_allocate /* Evaluate expr3 just once if not a variable. */ ... code-expr3-ts.type == BT_CLASS code-expr3-expr_type != EXPR_VARIABLE) ... classexpr = gfc_evaluate_now (classexpr, se.pre); I think we should handle intrinsic functions in a special way as they never change the actual type BT_CLASS; thus, the actual type can be taken from the actual argument of RESHAPE/TRANSPOSE. (Though, check that transfer(f()) doesn't evaluate f twice.) (If one skips that if block, the ICE occurs in gfc_array_allocate when obtaining the size via gfc_array_init_size.)
[Bug fortran/55824] [OOP] ICE with ALLOCATE and SOURCE= TRANSPOSE/RESHAPE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55824 Tobias Burnus burnus at gcc dot gnu.org changed: What|Removed |Added CC||burnus at gcc dot gnu.org --- Comment #1 from Tobias Burnus burnus at gcc dot gnu.org 2012-12-28 23:34:26 UTC --- allocate(y(3,3), source=transpose(x)) This one fails in trans-stmt.c's gfc_trans_allocate for expr3: gfc_init_se (se_sz, NULL); gfc_conv_expr_reference (se_sz, code-expr3); which invokes gfc_conv_variable as se-ss is NULL and se-descriptor_only is false: case REF_ARRAY: ... gfc_conv_array_ref (se, ref-u.ar, sym, expr-where); which expects se-ss != NULL. If one sets descriptor_only = 1, it will fail for: memsize = gfc_vtable_size_get (classexpr);