[Bug fortran/55824] [OOP] ICE with ALLOCATE and SOURCE= TRANSPOSE/RESHAPE
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Dec 29 10:13:00 GMT 2012
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.)
More information about the Gcc-bugs
mailing list