@@ -109,6 +109,17 @@ case "$with_elpa" in
109109 config_flags=" --enable-avx-kernels=${has_AVX} --enable-avx2-kernels=${has_AVX2} --enable-avx512-kernels=${has_AVX512} "
110110 fi
111111 fi
112+
113+ # GCC 15.2 miscompiles ELPA's double-complex AVX/AVX2 BLOCK2
114+ # kernels when tree SLP vectorization is enabled.
115+ elpa_c_workaround_flags=" "
116+ cc_version=" $( " ${MPICC} " -dumpfullversion -dumpversion 2> /dev/null || true) "
117+ cc_banner=" $( " ${MPICC} " --version 2> /dev/null | head -n 1 || true) "
118+ if [[ " ${cc_banner} " == * gcc* || " ${cc_banner} " == * GCC* ]] &&
119+ [[ " ${cc_version} " =~ ^15\. 2(\. | $) ]]; then
120+ elpa_c_workaround_flags=" -fno-tree-slp-vectorize"
121+ fi
122+
112123 for TARGET in " cpu" " nvidia" ; do
113124 # Accept both uppercase and lowercase GPU enable flags for compatibility
114125 gpu_enabled=" ${ENABLE_CUDA} "
@@ -140,7 +151,7 @@ case "$with_elpa" in
140151 CXX=${MPICXX} \
141152 CPP=" cpp -E" \
142153 FCFLAGS=" ${FCFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \
143- CFLAGS=" ${CFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \
154+ CFLAGS=" ${CFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto ${elpa_c_workaround_flags} " \
144155 CXXFLAGS=" ${CXXFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \
145156 LDFLAGS=" ${MATH_LDFLAGS} ${SCALAPACK_LDFLAGS} ${cray_ldflags} -lstdc++" \
146157 LIBS=" ${SCALAPACK_LIBS} $( resolve_string " ${MATH_LIBS} " " MPI" ) ${MPI_LIBS} " \
@@ -171,7 +182,7 @@ case "$with_elpa" in
171182 CXX=${MPICXX} \
172183 CPP=" cpp -E" \
173184 FCFLAGS=" ${FCFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \
174- CFLAGS=" ${CFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \
185+ CFLAGS=" ${CFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto ${elpa_c_workaround_flags} " \
175186 CXXFLAGS=" ${CXXFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \
176187 LDFLAGS=" -Wl,--allow-multiple-definition -Wl,--enable-new-dtags ${MATH_LDFLAGS} ${SCALAPACK_LDFLAGS} ${cray_ldflags} -lstdc++" \
177188 LIBS=" ${SCALAPACK_LIBS} $( resolve_string " ${MATH_LIBS} " " MPI" ) " \
0 commit comments