https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80931
Bug ID: 80931 Summary: ICE on move_alloc in gimplify_expr, at gimplify.c:11335 Product: gcc Version: 6.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: dev-zero at gentoo dot org Target Milestone: --- Created attachment 41444 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41444&action=edit minimal example for an ICE on move_alloc for deferred-length character strings Building the attached file using `LC_ALL=C gfortran -c move_alloc_ice.f90` with gfortran-6.3.0(-p1) and I get: move_alloce_ice.f90:29:0: call move_alloc(temp, this%keywords_) internal compiler error: in gimplify_expr, at gimplify.c:11335 0x8f57be gimplify_expr(tree_node**, gimple**, gimple**, bool (*) It doesn't seem to be a regression since 5.4.0 exhibits the same error: $ LC_ALL=C gfortran-5.4.0 -c move_alloc_ice.f90 move_alloc_ice.f90:29:0: call move_alloc(temp, this%keywords_) ^ internal compiler error: in gimplify_expr, at gimplify.c:9084 0x92511d gimplify_expr(tree_node**, gimple_statement_base**, gimple_statement_base**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:9084 0x922271 gimplify_modify_expr /var/tmp/paludis/sys-devel-gcc-5.4.0-r2(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:11335 0x8fdc92 gimplify_modify_expr /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:4707 0x8f5141 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:10386 0x8f6da5 gimplify_stmt(tree_node**, gimple**) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:5687 0x8f482b gimplify_statement_list /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:1537 0x8f482b gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:10803 0x8f6da5 gimplify_stmt(tree_node**, gimple**) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:5687 0x8f7940 gimplify_bind_expr /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:1142 0x8f3a94 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:10585 0x8f6da5 gimplify_stmt(tree_node**, gimple**) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:5687 0x8f482b gimplify_statement_list /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:1537 0x8f482b gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:10803 0x8f6da5 gimplify_stmt(tree_node**, gimple**) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:5687 0x8f41ea gimplify_and_add(tree_node*, gimple**) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:425 0x8f41ea gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:10725 0x8f6da5 gimplify_stmt(tree_node**, gimple**) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:5687 0x8f7940 gimplify_bind_expr /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:1142 0x8f3a94 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:10585 0x8f6da5 gimplify_stmt(tree_node**, gimple**) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:5687 0x8f80da gimplify_body(tree_node*, bool) /var/tmp/paludis/sys-devel-gcc-6.3.0/work/gcc-6.3.0/gcc/gimplify.c:11532 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://bugs.gentoo.org/> for instructions. It has something to do with the Deferred-length character strings because when I use fixed length characters, the ICE is gone and the code works as intended (sort of, but that's my problem). Reducing the example to a simple program didn't exhibit the ICE either, despite the Deferred-length character strings. It doesn't seem to be a regression since 5.4.0 exhibits the same error: $ LC_ALL=C gfortran-5.4.0 -c move_alloc_ice.f90 move_alloc_ice.f90:29:0: call move_alloc(temp, this%keywords_) ^ internal compiler error: in gimplify_expr, at gimplify.c:9084 0x92511d gimplify_expr(tree_node**, gimple_statement_base**, gimple_statement_base**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:9084 0x922271 gimplify_modify_expr /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:4648 0x9236f5 gimplify_expr(tree_node**, gimple_statement_base**, gimple_statement_base**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:8147 0x926275 gimplify_stmt(tree_node**, gimple_statement_base**) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:5566 0x9243ab gimplify_statement_list /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:1493 0x9243ab gimplify_expr(tree_node**, gimple_statement_base**, gimple_statement_base**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:8562 0x926275 gimplify_stmt(tree_node**, gimple_statement_base**) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:5566 0x926b8f gimplify_bind_expr /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:1139 0x9248d3 gimplify_expr(tree_node**, gimple_statement_base**, gimple_statement_base**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:8344 0x926275 gimplify_stmt(tree_node**, gimple_statement_base**) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:5566 0x9243ab gimplify_statement_list /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:1493 0x9243ab gimplify_expr(tree_node**, gimple_statement_base**, gimple_statement_base**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:8562 0x926275 gimplify_stmt(tree_node**, gimple_statement_base**) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:5566 0x923a67 gimplify_and_add(tree_node*, gimple_statement_base**) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:424 0x923a67 gimplify_expr(tree_node**, gimple_statement_base**, gimple_statement_base**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:8484 0x926275 gimplify_stmt(tree_node**, gimple_statement_base**) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:5566 0x926b8f gimplify_bind_expr /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:1139 0x9248d3 gimplify_expr(tree_node**, gimple_statement_base**, gimple_statement_base**, bool (*)(tree_node*), int) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:8344 0x926275 gimplify_stmt(tree_node**, gimple_statement_base**) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:5566 0x927299 gimplify_body(tree_node*, bool) /var/tmp/paludis/sys-devel-gcc-5.4.0-r2/work/gcc-5.4.0/gcc/gimplify.c:9281 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://bugs.gentoo.org/> for instructions.