All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH] tcg/optimize: only read val after const check
@ 2022-02-09 11:21 Alex Bennée
  2022-02-09 11:55 ` Philippe Mathieu-Daudé via
  2022-02-28 20:44 ` Richard Henderson
  0 siblings, 2 replies; 3+ messages in thread
From: Alex Bennée @ 2022-02-09 11:21 UTC (permalink / raw)
  To: qemu-devel, richard.henderson; +Cc: Alex Bennée

valgrind pointed out that arg_info()->val can be undefined which will
be the case if the arguments are not constant. The ordering of the
checks will have ensured we never relied on an undefined value but for
the sake of completeness re-order the code to be clear.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 tcg/optimize.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tcg/optimize.c b/tcg/optimize.c
index e573000951..06213fd434 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -552,10 +552,10 @@ static bool do_constant_folding_cond_eq(TCGCond c)
 static int do_constant_folding_cond(TCGType type, TCGArg x,
                                     TCGArg y, TCGCond c)
 {
-    uint64_t xv = arg_info(x)->val;
-    uint64_t yv = arg_info(y)->val;
-
     if (arg_is_const(x) && arg_is_const(y)) {
+        uint64_t xv = arg_info(x)->val;
+        uint64_t yv = arg_info(y)->val;
+
         switch (type) {
         case TCG_TYPE_I32:
             return do_constant_folding_cond_32(xv, yv, c);
@@ -567,7 +567,7 @@ static int do_constant_folding_cond(TCGType type, TCGArg x,
         }
     } else if (args_are_copies(x, y)) {
         return do_constant_folding_cond_eq(c);
-    } else if (arg_is_const(y) && yv == 0) {
+    } else if (arg_is_const(y) && arg_info(y)->val == 0) {
         switch (c) {
         case TCG_COND_LTU:
             return 0;
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [RFC PATCH] tcg/optimize: only read val after const check
  2022-02-09 11:21 [RFC PATCH] tcg/optimize: only read val after const check Alex Bennée
@ 2022-02-09 11:55 ` Philippe Mathieu-Daudé via
  2022-02-28 20:44 ` Richard Henderson
  1 sibling, 0 replies; 3+ messages in thread
From: Philippe Mathieu-Daudé via @ 2022-02-09 11:55 UTC (permalink / raw)
  To: Alex Bennée, qemu-devel, richard.henderson

On 9/2/22 12:21, Alex Bennée wrote:
> valgrind pointed out that arg_info()->val can be undefined which will
> be the case if the arguments are not constant. The ordering of the
> checks will have ensured we never relied on an undefined value but for
> the sake of completeness re-order the code to be clear.
> 
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
>   tcg/optimize.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [RFC PATCH] tcg/optimize: only read val after const check
  2022-02-09 11:21 [RFC PATCH] tcg/optimize: only read val after const check Alex Bennée
  2022-02-09 11:55 ` Philippe Mathieu-Daudé via
@ 2022-02-28 20:44 ` Richard Henderson
  1 sibling, 0 replies; 3+ messages in thread
From: Richard Henderson @ 2022-02-28 20:44 UTC (permalink / raw)
  To: Alex Bennée, qemu-devel

On 2/9/22 01:21, Alex Bennée wrote:
> valgrind pointed out that arg_info()->val can be undefined which will
> be the case if the arguments are not constant. The ordering of the
> checks will have ensured we never relied on an undefined value but for
> the sake of completeness re-order the code to be clear.
> 
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
>   tcg/optimize.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)

Thanks for this.  Just missed today's pull, but applied, finally.


r~

> 
> diff --git a/tcg/optimize.c b/tcg/optimize.c
> index e573000951..06213fd434 100644
> --- a/tcg/optimize.c
> +++ b/tcg/optimize.c
> @@ -552,10 +552,10 @@ static bool do_constant_folding_cond_eq(TCGCond c)
>   static int do_constant_folding_cond(TCGType type, TCGArg x,
>                                       TCGArg y, TCGCond c)
>   {
> -    uint64_t xv = arg_info(x)->val;
> -    uint64_t yv = arg_info(y)->val;
> -
>       if (arg_is_const(x) && arg_is_const(y)) {
> +        uint64_t xv = arg_info(x)->val;
> +        uint64_t yv = arg_info(y)->val;
> +
>           switch (type) {
>           case TCG_TYPE_I32:
>               return do_constant_folding_cond_32(xv, yv, c);
> @@ -567,7 +567,7 @@ static int do_constant_folding_cond(TCGType type, TCGArg x,
>           }
>       } else if (args_are_copies(x, y)) {
>           return do_constant_folding_cond_eq(c);
> -    } else if (arg_is_const(y) && yv == 0) {
> +    } else if (arg_is_const(y) && arg_info(y)->val == 0) {
>           switch (c) {
>           case TCG_COND_LTU:
>               return 0;



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-02-28 20:45 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-09 11:21 [RFC PATCH] tcg/optimize: only read val after const check Alex Bennée
2022-02-09 11:55 ` Philippe Mathieu-Daudé via
2022-02-28 20:44 ` Richard Henderson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.