https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80105
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2017-09-18 CC| |spop at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- The cases I've seen this ICE hitting is when we have a conditional loop like one resulting from unswitching of SUBROUTINE rk_addtend_dry ( t_tend, t_tendf, t_save, rk_step, & h_diabatic, mut, msft, ide, jde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte) IMPLICIT NONE INTEGER , INTENT(IN ) :: ide, jde, ims, ime, jms, jme, kms, kme, & its, ite, jts, jte, kts, kte INTEGER , INTENT(IN ) :: rk_step REAL , DIMENSION( ims:ime , kms:kme, jms:jme ), & INTENT(INOUT) :: t_tend, t_tendf REAL , DIMENSION( ims:ime , kms:kme, jms:jme ) , & INTENT(IN ) :: t_save, h_diabatic REAL , DIMENSION( ims:ime , jms:jme ) , INTENT(IN ) :: mut, msft INTEGER :: i, j, k DO j = jts,MIN(jte,jde-1) DO k = kts,kte-1 DO i = its,MIN(ite,ide-1) IF(rk_step == 1)t_tendf(i,k,j) = t_tendf(i,k,j) + t_save(i,k,j) t_tend(i,k,j) = t_tend(i,k,j) + t_tendf(i,k,j)/msft(i,j) & + mut(i,j)*h_diabatic(i,k,j)/msft(i,j) ENDDO ENDDO ENDDO END SUBROUTINE rk_addtend_dry not sure if we are supposed to handle this or not. But it seems like in case ISL gets confused enough we end up with an empty scheduling domain which we assert on. The "easy" way is proagating the error up along build_original_schedule -> build_poly_scop but eventually we can detect this earlier?