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