https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77679
Bug ID: 77679 Summary: ICE in fold_array_ctor_reference, at gimple-fold.c:5586 Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: gerhard.steinmetz.fort...@t-online.de Target Milestone: --- Affects versions 6 and 7, at -Os, -O1 or higher. Invalid code with an uninitialized variable. $ cat z1.f90 program p character(1) :: x(2) x = [character(n(1)) :: 'a', 'b'] end $ gfortran-7-20160918 -O0 z1.f90 z1.f90:3:0: x = [character(n(1)) :: 'a', 'b'] Error: size of variable 'A.0' is too large $ gfortran-7-20160918 -O2 z1.f90 z1.f90:4:0: end internal compiler error: in fold_array_ctor_reference, at gimple-fold.c:5586 0x996e18 fold_array_ctor_reference ../../gcc/gimple-fold.c:5585 0x996e18 fold_ctor_reference(tree_node*, tree_node*, unsigned long, unsigned long, tree_node*) ../../gcc/gimple-fold.c:5727 0x997055 fold_const_aggregate_ref_1(tree_node*, tree_node* (*)(tree_node*)) ../../gcc/gimple-fold.c:5835 0x997eb0 gimple_fold_stmt_to_constant_1(gimple*, tree_node* (*)(tree_node*), tree_node* (*)(tree_node*)) ../../gcc/gimple-fold.c:5297 0xe114bf record_temporary_equivalences_from_stmts_at_dest ../../gcc/tree-ssa-threadedge.c:329 0xe12351 thread_through_normal_block ../../gcc/tree-ssa-threadedge.c:1049 0xe13d21 thread_across_edge(gcond*, edge_def*, bool, const_and_copies*, avail_exprs_stack*, tree_node* (*)(gimple*, gimple*, avail_exprs_stack*)) ../../gcc/tree-ssa-threadedge.c:1289 0xd44c90 dom_opt_dom_walker::thread_across_edge(edge_def*) ../../gcc/tree-ssa-dom.c:989 0xd44ea9 dom_opt_dom_walker::after_dom_children(basic_block_def*) ../../gcc/tree-ssa-dom.c:1408 0x1299c37 dom_walker::walk(basic_block_def*) ../../gcc/domwalk.c:307 0xd47988 execute ../../gcc/tree-ssa-dom.c:614