https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89956
Bug ID: 89956 Summary: [9 Regression] ICE: Segmentation fault (in gsi_for_stmt(gimple*)) 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: asolokha at gmx dot com Target Milestone: --- gfortran-9.0.0-alpha20190331 (r270048) ICEs when compiling the following testcase w/ -O2 (-O3, -Ofast) -fno-code-hoisting -fno-signed-zeros -fno-trapping-math -fno-tree-dominator-opts -fno-tree-forwprop -fno-tree-pre: module de contains function zu (az, xx) result (q3) real :: az, xx, q3 q3 = 1.0 - lz (az, xx) - lz (xx, az) end function zu function lz (ho, gh) result (ye) real :: ho, gh, ye ye = sqrt (ho) - ho * gh end function lz end module de % powerpc-e300c3-linux-gnu-gfortran-9.0.0-alpha20190331 -O2 -fno-code-hoisting -fno-signed-zeros -fno-trapping-math -fno-tree-dominator-opts -fno-tree-forwprop -fno-tree-pre -c xonlkfwo.f90 during GIMPLE pass: widening_mul xonlkfwo.f90:3:0: 3 | function zu (az, xx) result (q3) | internal compiler error: Segmentation fault 0xd83ce6 crash_signal /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190331/work/gcc-9-20190331/gcc/toplev.c:326 0xacbfab gsi_for_stmt(gimple*) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190331/work/gcc-9-20190331/gcc/gimple-iterator.c:611 0xefe0b6 convert_mult_to_fma_1 /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190331/work/gcc-9-20190331/gcc/tree-ssa-math-opts.c:2882 0xf03e07 convert_mult_to_fma /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190331/work/gcc-9-20190331/gcc/tree-ssa-math-opts.c:3278 0xf048cb after_dom_children /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190331/work/gcc-9-20190331/gcc/tree-ssa-math-opts.c:3755 0x1463647 dom_walker::walk(basic_block_def*) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190331/work/gcc-9-20190331/gcc/domwalk.c:395 0xf03891 execute /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190331/work/gcc-9-20190331/gcc/tree-ssa-math-opts.c:3838 ==20688== Invalid read of size 8 ==20688== at 0xACBFAB: gsi_for_stmt(gimple*) (gimple-iterator.c:611) ==20688== by 0xEFE0B6: convert_mult_to_fma_1(tree_node*, tree_node*, tree_node*) (tree-ssa-math-opts.c:2882) ==20688== by 0xF03E07: convert_mult_to_fma(gimple*, tree_node*, tree_node*, fma_deferring_state*) (tree-ssa-math-opts.c:3278) ==20688== by 0xF048CB: (anonymous namespace)::math_opts_dom_walker::after_dom_children(basic_block_def*) (tree-ssa-math-opts.c:3755) ==20688== by 0x1463647: dom_walker::walk(basic_block_def*) (domwalk.c:395) ==20688== by 0xF03891: (anonymous namespace)::pass_optimize_widening_mul::execute(function*) (tree-ssa-math-opts.c:3838) ==20688== by 0xCABD3C: execute_one_pass(opt_pass*) (passes.c:2487) ==20688== by 0xCAC497: execute_pass_list_1(opt_pass*) (passes.c:2573) ==20688== by 0xCAC4A9: execute_pass_list_1(opt_pass*) (passes.c:2574) ==20688== by 0xCAC4F0: execute_pass_list(function*, opt_pass*) (passes.c:2584) ==20688== by 0x96EC8E: cgraph_node::expand() (cgraphunit.c:2198) ==20688== by 0x97011D: expand_all_functions (cgraphunit.c:2336) ==20688== by 0x97011D: compile (cgraphunit.c:2687) ==20688== by 0x97011D: symbol_table::compile() (cgraphunit.c:2597) ==20688== Address 0x10 is not stack'd, malloc'd or (recently) free'd (While my target here is powerpc, the ICE is not target-specific. One have to add -mfma in order to reproduce it for x86_64.)