Skip to content

Commit 38ce1e1

Browse files
author
Spencer Bryngelson
committed
fix: gate CCE 19 IPA workaround on GITHUB_ACTIONS env var
1 parent e3a6808 commit 38ce1e1

1 file changed

Lines changed: 8 additions & 7 deletions

File tree

CMakeLists.txt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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()
743745
endif()
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

Comments
 (0)