https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89904
Thomas Koenig <tkoenig at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |tkoenig at gcc dot gnu.org --- Comment #10 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- (In reply to anlauf from comment #9) > If you start from the full testcase, and remove - starting from the end - > block for block: first module m, then subroutine f, then subroutine e, > then subroutine d, what does trigger the ICE? This segfaults on gcc135 (POWER9): [tkoenig@gcc135 ~]$ cat a.f90 recursive subroutine e k = transfer (transfer (e, e), 1) end [tkoenig@gcc135 ~]$ gfortran -O a.f90 Im Durchlauf GIMPLE: ccp a.f90:3:0: 3 | end | interner Compiler-Fehler: in fold_convert_loc, bei fold-const.c:2552 0x10648633 fold_convert_loc(unsigned int, tree_node*, tree_node*) ../../trunk/gcc/fold-const.c:2552 0x10e9df87 build_zero_cst(tree_node*) ../../trunk/gcc/tree.c:2382 0x10c36297 evaluate_stmt ../../trunk/gcc/tree-ssa-ccp.c:1997 0x10c38403 visit_assignment ../../trunk/gcc/tree-ssa-ccp.c:2352 0x10cf266f ssa_propagation_engine::simulate_stmt(gimple*) ../../trunk/gcc/tree-ssa-propagate.c:230 0x10cf2acb ssa_propagation_engine::simulate_block(basic_block_def*) ../../trunk/gcc/tree-ssa-propagate.c:337 0x10cf4a63 ssa_propagation_engine::ssa_propagate() ../../trunk/gcc/tree-ssa-propagate.c:802 0x10c2ab27 do_ssa_ccp ../../trunk/gcc/tree-ssa-ccp.c:2471 0x10c2ab27 execute ../../trunk/gcc/tree-ssa-ccp.c:2515 Bitte senden Sie einen vollständigen Fehlerbericht auf Englisch ein; inclusive vorverarbeitetem Quellcode, wenn es dienlich ist. Please include the complete backtrace with any bug report. Weitere Hinweise finden Sie unter »<https://gcc.gnu.org/bugs/>«. -fdump-tree-original shows e () { integer(kind=4) k; { integer(kind=8) D.2240; integer(kind=8) D.2241; integer(kind=8) D.2242; integer(kind=8) D.2243; void <T374> (void) transfer.0; void <T374> (void) D.2245; static integer(kind=4) C.2246 = 1; integer(kind=8) D.2247; integer(kind=8) D.2248; integer(kind=4) transfer.1; D.2241 = 4; D.2242 = 4; __builtin_memcpy ((void *) &transfer.0, (void *) e, (unsigned long) MAX_EXPR <MIN_EXPR <D.2242, D.2241>, 0>); D.2245 = transfer.0; D.2240 = 4; D.2247 = 4; __builtin_memcpy ((void *) &transfer.1, (void *) &D.2245, (unsigned long) MAX_EXPR <MIN_EXPR <D.2247, D.2240>, 0>); k = transfer.1; } }