sim: cr16: fix build on gcc-12 (NULL comparison)
authorSergei Trofimovich <siarheit@google.com>
Sun, 14 Nov 2021 17:39:35 +0000 (17:39 +0000)
committerSergei Trofimovich <siarheit@google.com>
Tue, 16 Nov 2021 23:32:00 +0000 (23:32 +0000)
On gcc-12 build fails as:

    sim/cr16/interp.c: In function 'lookup_hash':
    sim/cr16/interp.c:89:25: error:
      the comparison will always evaluate as 'true'
      for the address of 'mnimonic' will never be NULL [-Werror=address]
       89 |   if ((h->ops->mnimonic != NULL) &&
          |                         ^~

'mnimonic' is a sharr array within ops. It can never be NULL.

While at it renamed 'mnimonic' to 'mnemonic'.

sim/cr16/cr16_sim.h
sim/cr16/interp.c

index a865d0936488944721a5eba256dd6e61dfdc9348..35a9614977c75e2db90a61888183581dcef2b3fa 100644 (file)
@@ -59,7 +59,7 @@ typedef uint32 creg_t;
 
 struct simops 
 {
-  char mnimonic[12];
+  char mnemonic[12];
   uint32 size;
   uint32 mask;
   uint32 opcode;
index 7bbcf3cde7c907ba7ab116fca81fc0dac1059bbe..18e1db9f73923163517bed3e720229bdf3b3cfe5 100644 (file)
@@ -86,8 +86,7 @@ lookup_hash (SIM_DESC sd, SIM_CPU *cpu, uint64 ins, int size)
   mask = (((1 << (32 - h->mask)) -1) << h->mask);
 
  /* Adjuest mask for branch with 2 word instructions.  */
-  if ((h->ops->mnimonic != NULL) &&
-      ((streq(h->ops->mnimonic,"b") && h->size == 2)))
+  if (streq(h->ops->mnemonic,"b") && h->size == 2)
     mask = 0xff0f0000;
 
 
@@ -99,7 +98,7 @@ lookup_hash (SIM_DESC sd, SIM_CPU *cpu, uint64 ins, int size)
 
       mask = (((1 << (32 - h->mask)) -1) << h->mask);
      /* Adjuest mask for branch with 2 word instructions.  */
-     if ((streq(h->ops->mnimonic,"b")) && h->size == 2)
+     if ((streq(h->ops->mnemonic,"b")) && h->size == 2)
        mask = 0xff0f0000;
 
      }