Patchwork [6/7] tcg: Tidy brcond optimization

login
register
mail settings
Submitter Richard Henderson
Date Sept. 27, 2012, 5:19 p.m.
Message ID <1348766397-20731-7-git-send-email-rth@twiddle.net>
Download mbox | patch
Permalink /patch/187419/
State New
Headers show

Comments

Richard Henderson - Sept. 27, 2012, 5:19 p.m.
Do the memset once.  Don't reset_temp before doing so.

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/optimize.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
Aurelien Jarno - Oct. 1, 2012, 6:48 p.m.
On Thu, Sep 27, 2012 at 10:19:56AM -0700, Richard Henderson wrote:
> Do the memset once.  Don't reset_temp before doing so.
> 
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/optimize.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/tcg/optimize.c b/tcg/optimize.c
> index c1881fa..dfac877 100644
> --- a/tcg/optimize.c
> +++ b/tcg/optimize.c
> @@ -771,22 +771,22 @@ static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr,
>              tmp = do_constant_folding_cond(op, args[0], args[1], args[2]);
>              if (tmp != 2) {
>                  if (tmp) {
> -                    memset(temps, 0, nb_temps * sizeof(struct tcg_temp_info));
>                      gen_opc_buf[op_index] = INDEX_op_br;
>                      gen_args[0] = args[3];
>                      gen_args += 1;
>                  } else {
>                      gen_opc_buf[op_index] = INDEX_op_nop;
> +                    args += 4;
> +                    break;
>                  }
>              } else {
> -                memset(temps, 0, nb_temps * sizeof(struct tcg_temp_info));
> -                reset_temp(args[0]);
>                  gen_args[0] = args[0];
>                  gen_args[1] = args[1];
>                  gen_args[2] = args[2];
>                  gen_args[3] = args[3];
>                  gen_args += 4;
>              }
> +            memset(temps, 0, nb_temps * sizeof(struct tcg_temp_info));
>              args += 4;
>              break;
>          CASE_OP_32_64(movcond):
> -- 
> 1.7.11.4
> 

Removing the useless reset_temp() is indeed something to do. I am not so
sure that factorizing the memset() and putting a break in the nop case
is easier to read. Nevertheless:

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

Patch

diff --git a/tcg/optimize.c b/tcg/optimize.c
index c1881fa..dfac877 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -771,22 +771,22 @@  static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr,
             tmp = do_constant_folding_cond(op, args[0], args[1], args[2]);
             if (tmp != 2) {
                 if (tmp) {
-                    memset(temps, 0, nb_temps * sizeof(struct tcg_temp_info));
                     gen_opc_buf[op_index] = INDEX_op_br;
                     gen_args[0] = args[3];
                     gen_args += 1;
                 } else {
                     gen_opc_buf[op_index] = INDEX_op_nop;
+                    args += 4;
+                    break;
                 }
             } else {
-                memset(temps, 0, nb_temps * sizeof(struct tcg_temp_info));
-                reset_temp(args[0]);
                 gen_args[0] = args[0];
                 gen_args[1] = args[1];
                 gen_args[2] = args[2];
                 gen_args[3] = args[3];
                 gen_args += 4;
             }
+            memset(temps, 0, nb_temps * sizeof(struct tcg_temp_info));
             args += 4;
             break;
         CASE_OP_32_64(movcond):