sim: cris: disable -Wshadow=local in generated mloop files

Message ID 20231223042851.9416-1-vapier@gentoo.org
State New
Headers
Series sim: cris: disable -Wshadow=local in generated mloop files |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 fail Patch failed to apply
linaro-tcwg-bot/tcwg_gdb_build--master-arm fail Patch failed to apply

Commit Message

Mike Frysinger Dec. 23, 2023, 4:28 a.m. UTC
  The mloop files include CGEN generated switch files which have some
nested assignments that expand into repeated shadowed variables.
Fixing this looks fairly non-trivial as it appears to be interplay
between the common CGEN code and how this particular set of cris
insns are defined.  Disable the warning instead.

In file included from sim/cris/mloop.in:286:
sim/cris/semcrisv10f-switch.c: In function ‘crisv10f_engine_run_full’:
sim/cris/semcrisv10f-switch.c:12383:8: error: declaration of ‘opval’ shadows a previous local [-Werror=shadow=local]
12383 |     SI opval = tmp_addr;
      |        ^~~~~
sim/cris/semcrisv10f-switch.c:12371:9: note: shadowed declaration is here
12371 |     USI opval = ({   SI tmp_addr;
      |         ^~~~~

And the code looks like:
	USI opval = ({
		...
			{
				SI opval = tmp_addr;
				...
			}
		...
	});

Since the CGEN code treats "opval" as an internal variable that the cpu
definitions don't have direct access to, the likelihood of this being a
real bug is low, so leave it be.  The warning is suppressed for more code
that is hand written (e.g. the mloop logic), but disabling for the entire
file is the easiest way to suppress while keeping it on everywhere else in
the sim.
---
 sim/Makefile.in   | 4 +++-
 sim/cris/local.mk | 2 ++
 2 files changed, 5 insertions(+), 1 deletion(-)
  

Patch

diff --git a/sim/Makefile.in b/sim/Makefile.in
index 604732c698c5..6b73533f9db3 100644
--- a/sim/Makefile.in
+++ b/sim/Makefile.in
@@ -2160,7 +2160,9 @@  testsuite_common_CPPFLAGS = \
 
 @SIM_ENABLE_ARCH_cr16_TRUE@cr16_gencode_SOURCES = cr16/gencode.c
 @SIM_ENABLE_ARCH_cr16_TRUE@cr16_gencode_LDADD = cr16/cr16-opc.o
-@SIM_ENABLE_ARCH_cris_TRUE@AM_CFLAGS_cris_mloopv10f.o = -Wno-unused-but-set-variable
+@SIM_ENABLE_ARCH_cris_TRUE@AM_CFLAGS_cris_mloopv10f.o =  \
+@SIM_ENABLE_ARCH_cris_TRUE@	-Wno-unused-but-set-variable \
+@SIM_ENABLE_ARCH_cris_TRUE@	-Wno-shadow=local
 @SIM_ENABLE_ARCH_cris_TRUE@AM_CFLAGS_cris_mloopv32f.o = -Wno-unused-but-set-variable
 @SIM_ENABLE_ARCH_cris_TRUE@nodist_cris_libsim_a_SOURCES = \
 @SIM_ENABLE_ARCH_cris_TRUE@	cris/modules.c
diff --git a/sim/cris/local.mk b/sim/cris/local.mk
index 011f8029e49f..a8eea65572ad 100644
--- a/sim/cris/local.mk
+++ b/sim/cris/local.mk
@@ -19,6 +19,8 @@ 
 ## Some CGEN kludges are causing build-time warnings.  See cris.cpu for details.
 AM_CFLAGS_%C%_mloopv10f.o = -Wno-unused-but-set-variable
 AM_CFLAGS_%C%_mloopv32f.o = -Wno-unused-but-set-variable
+## Some CGEN assignments use variable names that are nested & repeated.
+AM_CFLAGS_%C%_mloopv10f.o += -Wno-shadow=local
 
 nodist_%C%_libsim_a_SOURCES = \
 	%D%/modules.c