Re: [PATCH] sim: tighten up generated decode tables

"Jose E. Marchesi via Cgen" <[email protected]> Fri, 22 Dec 2023 11:55:56 +0100
Newsgroups gmane.comp.tools.cgen.devel
Message-ID <[email protected]>
> The use of /* fall through */ with consective case statements doesn't
> really add any value, and when generating large files, can take up a
> lot of space.  In the case of cris, it alone adds ~20k, or ~10%.

I am a little concern this change may trigger implicit-fallthrough
warnings when compiling the generated code.  Not sure this is a problem
in practice though, since nor binutils nor sim uses
-Wimplicit-fallthrough for building as far as I can see.

> Also trim the space before the : with case statements.
> ---
>  utils-sim.scm | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/utils-sim.scm b/utils-sim.scm
> index dca0f0705036..8011bb775933 100644
> --- a/utils-sim.scm
> +++ b/utils-sim.scm
> @@ -684,14 +684,14 @@
>  		(obj:name (dtable-entry-value (car rest)))))
>        (string-append indent "  case "
>  		     (number->string (dtable-entry-index entry))
> -		     " : /* fall through */\n"))
> +		     ":\n"))
>  
>       (else
>        (let ((consistent-base-insn? (and (equal? APPLICATION 'SID-SIMULATOR)
>  					(> (state-base-insn-bitsize)
>  					   (insn-length insn)))))
>  	(string-append indent "  case "
> -		       (number->string (dtable-entry-index entry)) " :"
> +		       (number->string (dtable-entry-index entry)) ":"
>  		       ;; Compensate for base-insn-size > current-insn-size by
>  		       ;; adjusting entire_insn.
>  		       ;; Activate this logic only for sid simulators; they are
> @@ -825,7 +825,7 @@
>      (string-list
>       indent "  case "
>       (number->string (dtable-entry-index entry))
> -     " :\n"
> +     ":\n"
>  
>       (let ((iflds-tracking (/decode-expr-ifield-tracking expr-list))
>  	   (indent (string-append indent "    ")))
> @@ -914,7 +914,7 @@
>    (string-list
>     indent "  case "
>     (number->string (dtable-entry-index table))
> -   " :"
> +   ":"
>     ; If table is same as next, just emit a "fall through" to cut down on
>     ; generated code.
>     (if (and (not (null? rest))
> @@ -923,7 +923,7 @@
>  	    ; Ensure same table.
>  	    (eqv? (subdtable-key (dtable-entry-value table))
>  		  (subdtable-key (dtable-entry-value (car rest)))))
> -       " /* fall through */\n"
> +       "\n"
>         (string-list
>  	"\n"
>  	(/gen-decoder-switch switch-num
> @@ -1075,7 +1075,7 @@
>  		  result))))
>  
>       ;; ??? Can delete if all cases are present.
> -     indent "  default : "
> +     indent "  default: "
>       (/gen-decode-default-entry invalid-insn fn?) "\n"
>       indent "  }\n"
>       indent "}\n"