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.)

Reply via email to