https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71252
--- Comment #6 from Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> --- reduced testcase > cat bug.f90 MODULE xc_pbe INTEGER, PARAMETER :: dp=8 PRIVATE PUBLIC :: pbe_lda_info, pbe_lsd_info, pbe_lda_eval, pbe_lsd_eval CONTAINS SUBROUTINE pbe_lsd_eval(rho_set,deriv_set,grad_deriv,pbe_params) INTEGER, INTENT(in) :: grad_deriv INTEGER :: handle, npoints, param, stat LOGICAL :: failure REAL(kind=dp) :: epsilon_drho, epsilon_rho, & scale_ec, scale_ex REAL(kind=dp), DIMENSION(:, :, :), POINTER :: dummy, e_0, e_ndr, & e_ndr_ndr, e_ndr_ra, e_ndr_rb, e_ndra, e_ndra_ndra, e_ndra_ra, e_ndrb, & e_ndrb_ndrb, e_ndrb_rb, e_ra, e_ra_ra, e_ra_rb, e_rb, e_rb_rb, & norm_drho, norm_drhoa, norm_drhob, rhoa, rhob IF (.NOT. failure) THEN CALL pbe_lsd_calc(& rhoa=rhoa, rhob=rhob, norm_drho=norm_drho, norm_drhoa=norm_drhoa,& norm_drhob=norm_drhob, e_0=e_0, e_ra=e_ra, e_rb=e_rb,& e_ra_ndra=e_ndra_ra,& e_rb_ndrb=e_ndrb_rb, e_ndr_ndr=e_ndr_ndr,& e_ndra_ndra=e_ndra_ndra, e_ndrb_ndrb=e_ndrb_ndrb, e_ndr=e_ndr,& e_ndra=e_ndra, e_ndrb=e_ndrb, e_ra_ra=e_ra_ra, & e_ra_rb=e_ra_rb, e_rb_rb=e_rb_rb, e_ra_ndr=e_ndr_ra,& e_rb_ndr=e_ndr_rb,& grad_deriv=grad_deriv, npoints=npoints, & epsilon_rho=epsilon_rho,epsilon_drho=epsilon_drho,& param=param,scale_ec=scale_ec,scale_ex=scale_ex) END IF END SUBROUTINE pbe_lsd_eval SUBROUTINE pbe_lsd_calc(rhoa, rhob, norm_drho, norm_drhoa, norm_drhob,& e_0, e_ra, e_rb, e_ra_ndra, e_rb_ndrb, e_ndr_ndr,& e_ndra_ndra, e_ndrb_ndrb, e_ndr,& e_ndra, e_ndrb, e_ra_ra, e_ra_rb, e_rb_rb, e_ra_ndr, e_rb_ndr,& grad_deriv,npoints,epsilon_rho,epsilon_drho,param,scale_ec,scale_ex) REAL(kind=dp), DIMENSION(*), INTENT(in) :: rhoa, rhob, norm_drho, & norm_drhoa, norm_drhob REAL(kind=dp), DIMENSION(*), INTENT(inout) :: e_0, e_ra, e_rb, e_ra_ndra, & e_rb_ndrb, e_ndr_ndr, e_ndra_ndra, e_ndrb_ndrb, e_ndr, e_ndra, e_ndrb, & e_ra_ra, e_ra_rb, e_rb_rb, e_ra_ndr, e_rb_ndr INTEGER, INTENT(in) :: grad_deriv, npoints REAL(kind=dp), INTENT(in) :: epsilon_rho, epsilon_drho INTEGER, INTENT(in) :: param REAL(kind=dp), INTENT(in) :: scale_ec, scale_ex REAL(kind=dp) :: epsilon_c_unifrhoarhob, epsilon_c_unifrhob, & t7, t70, t705, t708, t71, t711, t72, t726, t73, t733, t736, t74, t745, & trhob, trhobnorm_drho, trhobrhob SELECT CASE(grad_deriv) CASE default DO ii=1,npoints IF (my_rho>epsilon_rho) THEN IF (grad_deriv>=2.OR.grad_deriv==-2) THEN alpha_c1rhoa = alpha_crhoa f1rhoa = frhoa t745 = -0.4e1_dp * t77 * t245 * chirhoarhoa + (-0.2e1_dp * t194 * & t212 + t626 * t596 * t628 * t34 / 0.2e1_dp - e_c_u_0rhoarhoa) * f * & t733 * t254 + 0.4e1_dp * t736 * t254 + 0.12e2_dp * t85 * t79 * t682 & + 0.4e1_dp * t85 * t244 * chirhoarhoa epsilon_c_unifrhoarhoa = e_c_u_0rhoarhoa + (0.2e1_dp * t215 * & t233 - t674 * t644 * t676 * t52 / 0.2e1_dp) * f * t82 + alpha_crhoa & * f1rhoa * t82 - 0.4e1_dp * t240 * t246 + alpha_c1rhoa * frhoa * t82& + t745 Arhoarhoa = 0.2e1_dp * t820 * t822 * t828 - t101 * t281 * (& 0.3e1_dp * t102 * t285 * phirhoarhoa) * t107 - t851 * t289 * t828 * & t321 + 0.2e1_dp * t310 * t936 * t321 * t876 - t310 * t313 * t959 e_ra_ra(ii) = e_ra_ra(ii)+& scale_ex * (0.2e1_dp * ex_unif_a1rhoa * Fx_a + & my_rho * (epsilon_c_unifrhoarhoa + 0.6e1_dp * t858 * t294 * phi1rhoa +& - t110 * t967 * t879)) t1674 = t1630 + t1632 + t1635 + t1638 + t1640 + 0.2e1_dp * A1rhob & * Arhobrhob + 0.8e1_dp * t944 * trhob * A1rhob + 0.12e2_dp * t953 * & scale_ex * (0.2e1_dp * ex_unif_a * & Fx_anorm_drhoa + 0.2e1_dp * t350 * Fx_anorm_drhoa + 0.2e1_dp * t140 & * (-0.8e1_dp * t1000 * t1001 * s_anorm_drhoa + 0.2e1_dp * t346 * & s_anorm_drhoa * s_arhoa + 0.2e1_dp * t346 * s_a * (-t336 * t131 * & kf_arhoa / 0.2e1_dp - t129 * t341 / 0.2e1_dp))) / 0.2e1_dp END IF END IF END DO END SELECT END SUBROUTINE pbe_lsd_calc END MODULE xc_pbe > gfortran -c -O3 -ffast-math -march=westmere bug.f90 bug.f90:69:20: - t110 * t967 * t879)) 1 Warning: Extension: Unary operator following arithmetic operator (use parentheses) at (1) bug.f90:6:0: SUBROUTINE pbe_lsd_eval(rho_set,deriv_set,grad_deriv,pbe_params) Error: definition in block 6 follows the use for SSA_NAME: _245 in statement: _148 = _245 * 2.0e+0; bug.f90:6:0: internal compiler error: verify_ssa failed 0xdbe8fc verify_ssa(bool, bool) ../../gcc/gcc/tree-ssa.c:1039 0xad114d execute_function_todo ../../gcc/gcc/passes.c:1971 0xad1b0b execute_todo ../../gcc/gcc/passes.c:2016 Please submit a full bug report, with preprocessed source if appropriate. Target: x86_64-pc-linux-gnu Configured with: ../gcc/configure --prefix=/data/vjoost/gnu/gcc_trunk/install --enable-languages=c,c++,fortran --disable-multilib --enable-plugins --enable-lto --disable-bootstrap Thread model: posix gcc version 7.0.0 20160525 (experimental) [trunk revision 236689] (GCC) COLLECT_GCC_OPTIONS='-c' '-O3' '-ffast-math' '-march=westmere' '-v' /data/vjoost/gnu/gcc_trunk/install/libexec/gcc/x86_64-pc-linux-gnu/7.0.0/f951 bug.f90 -quiet -dumpbase bug.f90 -march=westmere -auxbase bug -O3 -version -ffast-math -fintrinsic-modules-path /data/vjoost/gnu/gcc_trunk/install/lib/gcc/x86_64-pc-linux-gnu/7.0.0/finclude -o /tmp/cc5rSJGS.s GNU Fortran (GCC) version 7.0.0 20160525 (experimental) [trunk revision 236689] (x86_64-pc-linux-gnu) compiled by GNU C version 4.7.2 20120816 (prerelease) [gcc-4_7-branch revision 190437], GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version 0.15 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 GNU Fortran2008 (GCC) version 7.0.0 20160525 (experimental) [trunk revision 236689] (x86_64-pc-linux-gnu) compiled by GNU C version 4.7.2 20120816 (prerelease) [gcc-4_7-branch revision 190437], GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version 0.15 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096