https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89664

G. Steinmetz <gs...@t-online.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice-on-valid-code
             Target|                            |x86_64-pc-linux-gnu

--- Comment #1 from G. Steinmetz <gs...@t-online.de> ---

With type real functions :


$ cat z2.f90
subroutine s (x)
   real :: x
   call sub (x)
end
subroutine sub (x)
   real :: x, y
   logical :: a, b
   real :: f1, f2, f3, f4
   y = f1()
   a = .false.
   if ( f2() > f3() ) a = .true.
   b = .false.
   if ( f2() > f4() ) b = .true.
   if ( a ) then
      x = 1.0
   else if ( b ) then
      x = 1.0/y**2
   else
      x = 1.0/y - y**2
   end if
end


$ gcc-7          -c z2.f90 -Ofast
$ gcc-9-20190310 -c z2.f90 -O3
$
$ gcc-9-20190310 -c z2.f90 -Ofast
during GIMPLE pass: recip
z2.f90:1:0:

    1 | subroutine s (x)
      |
internal compiler error: Segmentation fault
0xb369df crash_signal
        ../../gcc/toplev.c:326
0x7f4f6f nearest_common_dominator(cdi_direction, basic_block_def*,
basic_block_def*)
        ../../gcc/dominance.c:1015
0xc64147 insert_bb
        ../../gcc/tree-ssa-math-opts.c:230
0xc66380 register_division_in
        ../../gcc/tree-ssa-math-opts.c:293
0xc66380 execute_cse_reciprocals_1
        ../../gcc/tree-ssa-math-opts.c:790
0xc69e99 execute
        ../../gcc/tree-ssa-math-opts.c:956

Reply via email to