sim: ppc: collapse is_valid switch table more
authorMike Frysinger <vapier@gentoo.org>
Wed, 9 Nov 2022 19:15:34 +0000 (02:15 +0700)
committerMike Frysinger <vapier@gentoo.org>
Thu, 10 Nov 2022 07:27:40 +0000 (14:27 +0700)
Instead of writing:
  case 1:
    return 1;
  case 2:
    return 1;
  ...etc...

Output a single return so we get:
  case 1:
  case 2:
  case ...
    return 1;

This saves ~100 lines of code.  Hopefully the compiler was already
smart enough to optimize to the same code, but if not, this probably
helps there too :).

sim/ppc/dgen.c

index 0cc210b5fed1e365e5a84b686336daab16f5eade..d2ea922ffc913205d96d66c35b47a21757b2d7a5 100644 (file)
@@ -240,7 +240,7 @@ gen_spreg_c(spreg_table *table, lf *file)
       for (entry = table->sprs; entry != NULL; entry = entry->next) {
        lf_printf(file, "  case %d:\n", entry->spreg_nr);
        if (strcmp(*attribute, "is_valid") == 0)
-         lf_printf(file, "    return 1;\n");
+         /* No return -- see below.  */;
        else if (strcmp(*attribute, "is_readonly") == 0)
          lf_printf(file, "    return %d;\n", entry->is_readonly);
        else if (strcmp(*attribute, "length") == 0)
@@ -248,6 +248,9 @@ gen_spreg_c(spreg_table *table, lf *file)
        else
          ASSERT(0);
       }
+      /* Output a single return for is_valid.  */
+      if (strcmp(*attribute, "is_valid") == 0)
+       lf_printf(file, "    return 1;\n");
       lf_printf(file, "  }\n");
       lf_printf(file, "  return 0;\n");
     }