sim: cr16: fix build warnings
authorMike Frysinger <vapier@gentoo.org>
Mon, 19 Apr 2021 01:01:00 +0000 (21:01 -0400)
committerMike Frysinger <vapier@gentoo.org>
Mon, 19 Apr 2021 01:07:25 +0000 (21:07 -0400)
The printf fix is obvious enough, but the hash one is a real bug:
cr16/interp.c: In function 'sim_open':
cr16/interp.c:560:17: error: 'h' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  560 |               h = h->next;
      |               ~~^~~~~~~~~

It happens to not cause a problem currently because the first entry in
the generated table that this loop operates matches a codepath where h
is initialized.  Then when later entries don't match, the previous value
is pointing at the end of a valid hash table already, and the rest of
the code does nothing.

With this tidied up, we can delete the SIM_AC_OPTION_WARNINGS(no) call
to get the default common behavior where -Werror is enabled.

sim/cr16/ChangeLog
sim/cr16/configure
sim/cr16/configure.ac
sim/cr16/interp.c

index 274d89fdb7d92f916b4332c3e133098116147b8d..38cfe221169633cd9bf37f338c092003037aa437 100644 (file)
@@ -1,3 +1,10 @@
+2021-04-18  Mike Frysinger  <vapier@gentoo.org>
+
+       * interp.c (sim_open): Use PRIx64 to match mcode type.  Skip the
+       current simop when it doesn't match a known hash table.
+       * configure.ac (SIM_AC_OPTION_WARNINGS): Delete call.
+       * configure: Regenerate.
+
 2021-04-12  Mike Frysinger  <vapier@gentoo.org>
 
        * interp.c (sim_open): Delete 3rd arg to sim_cpu_alloc_all.
index 16b0d7237a8b7a4b33d2b69434fb0362c1b85051..99e21fc4b5139dd17a40d082d33ee215025a2cdb 100755 (executable)
@@ -11978,6 +11978,7 @@ fi
 fi
 
 
+
 # Check whether --enable-werror was given.
 if test "${enable_werror+set}" = set; then :
   enableval=$enable_werror; case "${enableval}" in
@@ -11994,6 +11995,9 @@ if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
 fi
 
 WERROR_CFLAGS=""
+  if test "${ERROR_ON_WARNING}" = yes ; then
+    WERROR_CFLAGS="-Werror"
+  fi
 
 build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
 -Wpointer-sign \
@@ -12075,7 +12079,6 @@ $as_echo "${WARN_CFLAGS} ${WERROR_CFLAGS}" >&6; }
 fi
 
 
-
 cgen_breaks=""
 if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then
 cgen_breaks="break cgen_rtx_error";
index 582779750d875427bf0970fe69a6ac46fc975d8d..f4dc9c1314db3769011bd57911b1aba43f04d335 100644 (file)
@@ -6,6 +6,5 @@ SIM_AC_COMMON
 
 SIM_AC_OPTION_ENDIAN(LITTLE)
 SIM_AC_OPTION_ALIGNMENT(NONSTRICT_ALIGNMENT)
-SIM_AC_OPTION_WARNINGS(no)
 
 SIM_AC_OUTPUT
index f0e0f76224adb802bc26a80d7b0708be831b5a69..46150069a383e08df37659870141ac8f6e04fa97 100644 (file)
@@ -330,7 +330,7 @@ do_run (SIM_DESC sd, SIM_CPU *cpu, uint64 mcode)
 
 #ifdef DEBUG
   if ((cr16_debug & DEBUG_INSTRUCTION) != 0)
-    sim_io_printf (sd, "do_long 0x%x\n", mcode);
+    sim_io_printf (sd, "do_long 0x%" PRIx64 "\n", mcode);
 #endif
 
    h = lookup_hash (sd, cpu, mcode, 1);
@@ -543,8 +543,9 @@ sim_open (SIM_OPEN_KIND kind, struct host_callback_struct *cb,
                else 
                  h = &hash_table[hash(s->opcode, 0)];
                break;
+
             default:
-              break;
+              continue;
             }
       
           /* go to the last entry in the chain.  */