@@ -748,16 +748,17 @@ if (MFC_SIMULATION)
748748 MFC_SETUP_TARGET (TARGET simulation
749749 SOURCES "${simulation_SRCs} "
750750 MPI FFTW OpenACC OpenMP )
751- # CCE 19.0.0 optcg ICE: two distinct crashes triggered by IPA inlining:
751+ # CCE 19.0.0 optcg ICE on GitHub Actions runners: IPA inlining triggers two
752+ # distinct crashes in optcg:
752753 # m_bubbles_EL: castIsValid assertion (InstCombine/foldIntegerTypedPHI)
753754 # m_phase_change, m_mpi_common, m_start_up: bring_routine_resident SIGSEGV
754- # Both crash locally and in CI on GPU builds. Apply -Oipa0 per-file
755- # unconditionally to the known crash sites (IPA cross-file inlining triggers
756- # the ICE; per-file disabling prevents it without affecting other files) .
757- # CPU-only builds in CI additionally disable IPA for the whole target
758- # (safe — no GPU device-call requirements, and the crash is nondeterministic
759- # so any file can become the crash site). See PR #1286.
760- if (CMAKE_Fortran_COMPILER_ID STREQUAL "Cray" )
755+ # GPU builds: apply -Oipa0 per-file to known crash sites. Whole-target
756+ # -Oipa0 is not safe for GPU builds — it breaks cross-file !$acc routine /
757+ # !DIR$ INLINEALWAYS device-call registration, causing runtime aborts .
758+ # CPU builds: disable IPA for the whole target (safe — no GPU requirements,
759+ # and the crash is nondeterministic so any file can become the crash site).
760+ # See PR #1286.
761+ if (CMAKE_Fortran_COMPILER_ID STREQUAL "Cray" AND DEFINED ENV{GITHUB_ACTIONS} )
761762 if (MFC_OpenACC OR MFC_OpenMP)
762763 set_source_files_properties (
763764 "${CMAKE_BINARY_DIR } /fypp/simulation/m_bubbles_EL.fpp.f90"
@@ -766,7 +767,7 @@ if (MFC_SIMULATION)
766767 "${CMAKE_BINARY_DIR } /fypp/simulation/m_start_up.fpp.f90"
767768 PROPERTIES COMPILE_OPTIONS "-Oipa0"
768769 )
769- elseif ( DEFINED ENV{GITHUB_ACTIONS} )
770+ else ( )
770771 target_compile_options (simulation PRIVATE -Oipa0 )
771772 endif ()
772773 endif ()
0 commit comments