[Bug fortran/60289] allocating class(*) pointer as character gives type-spec requires the same character-length parameter
janus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Feb 20 12:00:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60289
--- Comment #2 from janus at gcc dot gnu.org ---
The error can easily be silenced with this patch:
Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c (revision 207896)
+++ gcc/fortran/resolve.c (working copy)
@@ -6834,7 +6834,9 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code
goto failure;
}
- if (code->ext.alloc.ts.type == BT_CHARACTER && !e->ts.deferred)
+ /* Check F08:C632. */
+ if (code->ext.alloc.ts.type == BT_CHARACTER && !e->ts.deferred
+ && !UNLIMITED_POLY (e))
{
int cmp = gfc_dep_compare_expr (e->ts.u.cl->length,
code->ext.alloc.ts.u.cl->length);
But then one runs into an ICE in gimplify.c:
internal compiler error: Segmentation fault
class(*), pointer :: P
^
0x93ec0f crash_signal
/home/jweil/gcc49/trunk/gcc/toplev.c:337
0x7c9647 copy_if_shared_r
/home/jweil/gcc49/trunk/gcc/gimplify.c:769
0xaf404b walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, pointer_set_t*, tree_node* (*)(tree_node**, int*, tree_node*
(*)(tree_node**, int*, void*), void*, pointer_set_t*))
/home/jweil/gcc49/trunk/gcc/tree.c:10920
0xaf4208 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, pointer_set_t*, tree_node* (*)(tree_node**, int*, tree_node*
(*)(tree_node**, int*, void*), void*, pointer_set_t*))
/home/jweil/gcc49/trunk/gcc/tree.c:11201
0xaf4208 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, pointer_set_t*, tree_node* (*)(tree_node**, int*, tree_node*
(*)(tree_node**, int*, void*), void*, pointer_set_t*))
/home/jweil/gcc49/trunk/gcc/tree.c:11201
0xaf4254 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, pointer_set_t*, tree_node* (*)(tree_node**, int*, tree_node*
(*)(tree_node**, int*, void*), void*, pointer_set_t*))
/home/jweil/gcc49/trunk/gcc/tree.c:11025
0x7c9383 copy_if_shared
/home/jweil/gcc49/trunk/gcc/gimplify.c:800
0x7c9383 unshare_body
/home/jweil/gcc49/trunk/gcc/gimplify.c:815
0x7d0b9c gimplify_body(tree_node*, bool)
/home/jweil/gcc49/trunk/gcc/gimplify.c:8539
0x7d0f37 gimplify_function_tree(tree_node*)
/home/jweil/gcc49/trunk/gcc/gimplify.c:8708
0x6ce2f7 analyze_function
/home/jweil/gcc49/trunk/gcc/cgraphunit.c:649
0x6cf337 analyze_functions
/home/jweil/gcc49/trunk/gcc/cgraphunit.c:1017
0x6d0275 finalize_compilation_unit()
/home/jweil/gcc49/trunk/gcc/cgraphunit.c:2320
0x837a74 write_global_declarations()
/home/jweil/gcc49/trunk/gcc/langhooks.c:323
More information about the Gcc-bugs
mailing list