diff options
author | Andrew Burgess <aburgess@redhat.com> | 2022-10-12 11:07:24 +0100 |
---|---|---|
committer | Andrew Burgess <aburgess@redhat.com> | 2022-10-19 14:32:21 +0100 |
commit | cb9d1609da6e623158ba5a8cb4a2712bcea4f57f (patch) | |
tree | 3dca6e374b50714643a347533a3074cd4a1d1653 | |
parent | 2b06e59de0675c2cb526af2de6803dae29703d15 (diff) | |
download | fsf-binutils-gdb-cb9d1609da6e623158ba5a8cb4a2712bcea4f57f.zip fsf-binutils-gdb-cb9d1609da6e623158ba5a8cb4a2712bcea4f57f.tar.gz fsf-binutils-gdb-cb9d1609da6e623158ba5a8cb4a2712bcea4f57f.tar.bz2 |
sim/cgen: mask uninitialized variable warning in cgen-run.c
I see an uninitialized variable warning (with gcc 9.3.1) from
cgen-run.c, like this:
/tmp/build/sim/../../src/sim/cris/../common/cgen-run.c: In function ‘sim_resume’:
/tmp/build/sim/../../src/sim/cris/../common/cgen-run.c:259:5: warning: ‘engine_fns$’ may be used uninitialized in this function [-Wmaybe-uninitialized]
259 | (* engine_fns[next_cpu_nr]) (cpu);
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/build/sim/../../src/sim/cris/../common/cgen-run.c:232:14: note: ‘engine_fns$’ was declared here
232 | ENGINE_FN *engine_fns[MAX_NR_PROCESSORS];
| ^~~~~~~~~~
This is a false positive - we over allocate engine_fn, and then only
initialize the nr_cpus entries which we will later go on to use.
However, we can easily silence this warning by initializing the unused
entries in engine_fns to NULL, this might also help if anyone ever
looks at engine_fns in a debugger, it should now be obvious which
entries are in use, and which are not.
With this change the warning is gone.
There should be no change in behaviour with this commit.
-rw-r--r-- | sim/common/cgen-run.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sim/common/cgen-run.c b/sim/common/cgen-run.c index 9a13b0c..a9a493c 100644 --- a/sim/common/cgen-run.c +++ b/sim/common/cgen-run.c @@ -242,6 +242,11 @@ engine_run_n (SIM_DESC sd, int next_cpu_nr, int nr_cpus, int max_insns, int fast prime_cpu (cpu, max_insns); } + /* Ensure the remaining engine_fns slots are initialized, this silences a + compiler warning when engine_fns is used below. */ + for (i = nr_cpus; i < MAX_NR_PROCESSORS; ++i) + engine_fns[i] = NULL; + while (1) { SIM_ENGINE_PREFIX_HOOK (sd); |