summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lem_interp/interp_lib.lem6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lem_interp/interp_lib.lem b/src/lem_interp/interp_lib.lem
index b20aee1e..fb5b99d5 100644
--- a/src/lem_interp/interp_lib.lem
+++ b/src/lem_interp/interp_lib.lem
@@ -264,7 +264,8 @@ let rec arith_op_overflow_vec op sign size (V_tuple args) = match args with
let n = arith_op op (V_tuple [l1';l2']) in
let correct_size_num = to_vec ord ((List.length cs) * size) n in
let one_larger = to_num Signed (to_vec ord (((List.length cs) * size) +1) n) in
- let overflow = if (has_unknown l1 || has_unknown l2) then V_unknown else neq_vec (V_tuple [correct_size_num;one_larger]) in
+ let overflow = if (has_unknown l1 || has_unknown l2) then V_unknown
+ else neq(V_tuple [(to_num Signed correct_size_num);one_larger]) in
V_tuple [correct_size_num;overflow]
| [V_track v1 r1;V_track v2 r2] ->
taint (arith_op_overflow_vec op sign size (V_tuple [v1;v2])) (r1++r2)
@@ -399,7 +400,8 @@ let rec arith_op_overflow_vec_no0 op sign size (V_tuple args) = match args with
let n = arith_op_no0 op (V_tuple [l1';l2']) in
let correct_size_num = to_vec ord ((List.length cs) * size) n in
let one_larger = to_num sign (to_vec ord (((List.length cs) * size) +1) n) in
- let overflow = neq (V_tuple [correct_size_num;one_larger]) in
+ let overflow = if (has_unknown l1 || has_unknown l2) then V_unknown
+ else neq(V_tuple [(to_num Signed correct_size_num);one_larger]) in
V_tuple [correct_size_num;overflow]
| [V_track v1 r1;V_track v2 r2] ->
taint (arith_op_overflow_vec op sign size (V_tuple [v1;v2])) (r1++r2)