Patchwork [7/8] tcg: Sanity check deposit inputs

login
register
mail settings
Submitter Richard Henderson
Date Sept. 22, 2012, 12:18 a.m.
Message ID <1348273096-1495-8-git-send-email-rth@twiddle.net>
Download mbox | patch
Permalink /patch/186009/
State New
Headers show

Comments

Richard Henderson - Sept. 22, 2012, 12:18 a.m.
Given these are constants, checking once here means everything
after can assume they're correct.

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/tcg-op.h | 8 ++++++++
 1 file changed, 8 insertions(+)
Aurelien Jarno - Sept. 22, 2012, 7:52 p.m.
On Fri, Sep 21, 2012 at 05:18:15PM -0700, Richard Henderson wrote:
> Given these are constants, checking once here means everything
> after can assume they're correct.
> 
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/tcg-op.h | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h
> index d2fb283..ecb1ac3 100644
> --- a/tcg/tcg-op.h
> +++ b/tcg/tcg-op.h
> @@ -2081,6 +2081,10 @@ static inline void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1,
>      uint32_t mask;
>      TCGv_i32 t1;
>  
> +    tcg_debug_assert(ofs < 32);
> +    tcg_debug_assert(len <= 32);
> +    tcg_debug_assert(ofs + len <= 32);
> +
>      if (ofs == 0 && len == 32) {
>          tcg_gen_mov_i32(ret, arg2);
>          return;
> @@ -2112,6 +2116,10 @@ static inline void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1,
>      uint64_t mask;
>      TCGv_i64 t1;
>  
> +    tcg_debug_assert(ofs < 64);
> +    tcg_debug_assert(len <= 64);
> +    tcg_debug_assert(ofs + len <= 64);
> +
>      if (ofs == 0 && len == 64) {
>          tcg_gen_mov_i64(ret, arg2);
>          return;
> -- 
> 1.7.11.4
> 

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

Patch

diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h
index d2fb283..ecb1ac3 100644
--- a/tcg/tcg-op.h
+++ b/tcg/tcg-op.h
@@ -2081,6 +2081,10 @@  static inline void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1,
     uint32_t mask;
     TCGv_i32 t1;
 
+    tcg_debug_assert(ofs < 32);
+    tcg_debug_assert(len <= 32);
+    tcg_debug_assert(ofs + len <= 32);
+
     if (ofs == 0 && len == 32) {
         tcg_gen_mov_i32(ret, arg2);
         return;
@@ -2112,6 +2116,10 @@  static inline void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1,
     uint64_t mask;
     TCGv_i64 t1;
 
+    tcg_debug_assert(ofs < 64);
+    tcg_debug_assert(len <= 64);
+    tcg_debug_assert(ofs + len <= 64);
+
     if (ofs == 0 && len == 64) {
         tcg_gen_mov_i64(ret, arg2);
         return;