diff --git a/src/Rules.LXgfortran.mk b/src/Rules.LXgfortran.mk
index c171e1ebad660877d3dfd4341f157eaed1ed1275..ccae03cb226c2eeee6e4e97349a4e56b3fad875e 100644
--- a/src/Rules.LXgfortran.mk
+++ b/src/Rules.LXgfortran.mk
@@ -54,6 +54,9 @@ OPT       = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
 OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF0)
 CFLAGS    += -g -O0
+#-fbounds-check is bugged for GCC 11 and 12 (up to at least 12.2) in some special cases (GCC bug 109157)
+OBJS_NOBOUNDSCHECK = spll_mode_write_diachro.o
+$(OBJS_NOBOUNDSCHECK) : OPT = $(OPT_BASE) $(OPT_PERF0) -finit-real=nan
 endif
 ifeq "$(OPTLEVEL)" "OPENACCDEFONLY"
 CPPFLAGS    += -DMNH_OPENACC -D_FAKEOPENACC