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