@@ -735,10 +735,12 @@ if (MFC_PRE_PROCESS)
735735 if (CMAKE_Fortran_COMPILER_ID STREQUAL "Cray" )
736736 target_compile_options (pre_process PRIVATE -hfp0 )
737737 # CCE 19.0.0 IPA ICE: bring_routine_resident SIGSEGV in optcg during
738- # ipa_processing. The crash is nondeterministic and can hit any file via
739- # cross-file inlining, so disable IPA for the whole target. Safe for
740- # pre_process (CPU-only, no thermochem IPA requirements).
741- target_compile_options (pre_process PRIVATE -Oipa0 )
738+ # ipa_processing on GitHub Actions runners. Only manifests in CI (runner
739+ # memory layout triggers the nondeterministic crash). Guard with
740+ # GITHUB_ACTIONS so local Frontier builds keep full IPA performance.
741+ if (DEFINED ENV{GITHUB_ACTIONS})
742+ target_compile_options (pre_process PRIVATE -Oipa0 )
743+ endif ()
742744 endif ()
743745endif ()
744746
@@ -747,15 +749,14 @@ if (MFC_SIMULATION)
747749 SOURCES "${simulation_SRCs} "
748750 MPI FFTW OpenACC OpenMP )
749751 # CCE 19.0.0 IPA ICE: bring_routine_resident SIGSEGV in optcg during
750- # ipa_processing. The crash is nondeterministic — IPA inlines across all
751- # files in the target, so any file can become the crash site.
752+ # ipa_processing on GitHub Actions runners. Only manifests in CI.
752753 # For non-OpenMP builds: disable IPA for the entire target (safe, no IPA
753754 # requirements). For OpenMP builds: thermochem uses !DIR$ INLINEALWAYS
754755 # which requires IPA for device-call inlining, so we cannot disable IPA
755756 # globally. Instead apply -Oipa0 per-file to the known crash sites.
756757 # On OpenACC the pyrometheus patch emits !$acc routine seq (no IPA needed).
757758 # See PR #1286.
758- if (CMAKE_Fortran_COMPILER_ID STREQUAL "Cray" )
759+ if (CMAKE_Fortran_COMPILER_ID STREQUAL "Cray" AND DEFINED ENV{GITHUB_ACTIONS} )
759760 if (NOT MFC_OpenMP)
760761 target_compile_options (simulation PRIVATE -Oipa0 )
761762 else ()
0 commit comments