https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88945
Bug ID: 88945 Summary: ICE in fold_convert_loc in FRE when using -fdump-tree-fre-details Product: gcc Version: 9.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: rguenth at gcc dot gnu.org Target Milestone: --- It's probably an older issue, but was exposed in r257233: $ cat /tmp/task2.f90 call a contains subroutine b (c, d, e, f, g, h, i, j, k, l) character c character d integer, dimension (l) :: e integer, dimension (l) :: f character (*), dimension (l) :: g character h real, dimension (:, :, :) :: i double precision, dimension (:, :, :) :: j integer, dimension (:, :, :) :: k g = '' end subroutine a character c character d integer, dimension (7) :: e integer, dimension (7) :: f character g character h real, dimension (5, 6, 7) :: i double precision, dimension (6, 6, 7) :: j integer, dimension (5, 7, 6) :: k call b (c, d, e, f, g, h, i, j, k, 7) end end $ ./xgcc -B. /tmp/task2.f90 -c -O -fdump-tree-fre-details during GIMPLE pass: fre dump file: task2.f90.033t.fre1 xgcc: internal compiler error: Segmentation fault signal terminated program f951 Please submit a full bug report, with preprocessed source if appropriate. See <https://gcc.gnu.org/bugs/> for instructions. Program received signal SIGSEGV, Segmentation fault. 0x0000000000ab00c2 in fold_convert_loc (loc=49248, type=<integer_type 0x7ffff6b68000 sizetype>, arg=<ssa_name 0x7ffff6d41048>) at /home/marxin/Programming/gcc/gcc/fold-const.c:2400 2400 || TREE_CODE (orig) == ERROR_MARK) (gdb) bt #0 0x0000000000ab00c2 in fold_convert_loc (loc=49248, type=<integer_type 0x7ffff6b68000 sizetype>, arg=<ssa_name 0x7ffff6d41048>) at /home/marxin/Programming/gcc/gcc/fold-const.c:2400 #1 0x000000000105e12c in array_ref_element_size (exp=<optimized out>) at /home/marxin/Programming/gcc/gcc/tree.c:13462 #2 0x0000000000e7a295 in dump_generic_node (pp=0x7fffffffd500, node=<array_ref 0x7ffff6b5cf88>, spc=0, flags=TDF_BLOCKS, is_stmt=<optimized out>) at /home/marxin/Programming/gcc/gcc/tree-pretty-print.c:2154 #3 0x0000000000e7e656 in dump_generic_node (pp=pp@entry=0x7fffffffd500, node=<addr_expr 0x7ffff6d33880>, spc=spc@entry=0, flags=flags@entry=TDF_BLOCKS, is_stmt=is_stmt@entry=false) at /home/marxin/Programming/gcc/gcc/tree-pretty-print.c:2586 #4 0x0000000000b374bd in dump_unary_rhs (flags=TDF_BLOCKS, spc=0, gs=<optimized out>, buffer=0x7fffffffd500) at /home/marxin/Programming/gcc/gcc/gimple-pretty-print.c:408 #5 dump_gimple_assign (buffer=0x7fffffffd500, gs=<optimized out>, spc=0, flags=TDF_BLOCKS) at /home/marxin/Programming/gcc/gcc/gimple-pretty-print.c:628 #6 0x0000000000b38d6a in gimple_dump_bb_buff (flags=TDF_BLOCKS, indent=0, bb=<basic_block 0x7ffff6b5b888 (7)>, buffer=0x7fffffffd500) at /home/marxin/Programming/gcc/gcc/gimple-pretty-print.c:2854 #7 gimple_dump_bb (file=<optimized out>, bb=<basic_block 0x7ffff6b5b888 (7)>, indent=0, flags=TDF_BLOCKS) at /home/marxin/Programming/gcc/gcc/gimple-pretty-print.c:2878 #8 0x0000000000979eb5 in dump_bb (outf=0x232dd50, bb=bb@entry=<basic_block 0x7ffff6b5b888 (7)>, indent=indent@entry=0, flags=flags@entry=TDF_BLOCKS) at /home/marxin/Programming/gcc/gcc/cfghooks.c:282 #9 0x0000000000def2b6 in remove_bb (bb=<basic_block 0x7ffff6b5b888 (7)>) at /home/marxin/Programming/gcc/gcc/tree-cfg.c:2261 #10 0x000000000097a58a in delete_basic_block (bb=bb@entry=<basic_block 0x7ffff6b5b888 (7)>) at /home/marxin/Programming/gcc/gcc/cfghooks.c:599 #11 0x0000000000e0a179 in cleanup_control_flow_pre () at /home/marxin/Programming/gcc/gcc/tree-cfgcleanup.c:785 #12 0x0000000000e0a5ba in cleanup_tree_cfg_noloop () at /home/marxin/Programming/gcc/gcc/tree-cfgcleanup.c:881 #13 cleanup_tree_cfg () at /home/marxin/Programming/gcc/gcc/tree-cfgcleanup.c:989 #14 0x0000000000ce5c0d in execute_function_todo (fn=0x7ffff6d21160, data=<optimized out>) at /home/marxin/Programming/gcc/gcc/passes.c:1930 #15 0x0000000000ce6aaf in execute_todo (flags=96) at /home/marxin/Programming/gcc/gcc/passes.c:2031 #16 0x0000000000ce8cc7 in execute_one_pass (pass=<opt_pass* 0x22c8700 "fre"(38)>) at /home/marxin/Programming/gcc/gcc/passes.c:2520 #17 0x0000000000ce9198 in execute_pass_list_1 (pass=<opt_pass* 0x22c8700 "fre"(38)>) at /home/marxin/Programming/gcc/gcc/passes.c:2569 #18 0x0000000000ce91aa in execute_pass_list_1 (pass=<opt_pass* 0x22c83e0 "early_optimizations"(31)>) at /home/marxin/Programming/gcc/gcc/passes.c:2570 #19 0x0000000000ce91e9 in execute_pass_list (fn=0x7ffff6d21160, pass=<optimized out>) at /home/marxin/Programming/gcc/gcc/passes.c:2580 #20 0x0000000000cf1438 in do_per_function_toporder (callback=0xce91d0 <execute_pass_list(function*, opt_pass*)>, data=0x22c8260) at /home/marxin/Programming/gcc/gcc/passes.c:1705 #21 0x0000000000cf1473 in execute_ipa_pass_list (pass=<opt_pass* 0x22c8200 "opt_local_passes"(27)>) at /home/marxin/Programming/gcc/gcc/passes.c:2928 #22 0x00000000009ae9a3 in ipa_passes () at /home/marxin/Programming/gcc/gcc/cgraphunit.c:2482 #23 symbol_table::compile (this=0x7ffff6b56100) at /home/marxin/Programming/gcc/gcc/cgraphunit.c:2618 #24 0x00000000009b0d3d in symbol_table::compile (this=0x7ffff6b56100) at /home/marxin/Programming/gcc/gcc/cgraphunit.c:2863 #25 symbol_table::finalize_compilation_unit (this=0x7ffff6b56100) at /home/marxin/Programming/gcc/gcc/cgraphunit.c:2863 #26 0x0000000000dbca8b in compile_file () at /home/marxin/Programming/gcc/gcc/toplev.c:481 #27 0x00000000007a8e1a in do_compile () at /home/marxin/Programming/gcc/gcc/toplev.c:2176 #28 toplev::main (this=this@entry=0x7fffffffdabe, argc=<optimized out>, argc@entry=15, argv=<optimized out>, argv@entry=0x7fffffffdbb8) at /home/marxin/Programming/gcc/gcc/toplev.c:2311 #29 0x00000000007ac46b in main (argc=15, argv=0x7fffffffdbb8) at /home/marxin/Programming/gcc/gcc/main.c:39