From 2e69c321a035d6ae7dfd995cb0efb3e210dc4512 Mon Sep 17 00:00:00 2001 From: Kathy Gray Date: Mon, 18 May 2015 13:18:24 +0100 Subject: Add equality check for addresses And fix match failure problem (hopefully) --- src/lem_interp/interp.lem | 2 ++ src/lem_interp/interp_interface.lem | 8 ++++++++ 2 files changed, 10 insertions(+) (limited to 'src') diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem index 6396f51e..1a97f5db 100644 --- a/src/lem_interp/interp.lem +++ b/src/lem_interp/interp.lem @@ -463,6 +463,8 @@ let access_vector v n = retaint v (match (detaint v) with | V_unknown -> V_unknown | V_lit (L_aux L_undef _) -> v + | V_lit (L_aux L_zero _) -> v + | V_lit (L_aux L_one _ ) -> v | V_vector m dir vs -> list_nth vs (if is_inc(dir) then (n - m) else (m - n)) | V_vector_sparse _ _ _ vs d -> diff --git a/src/lem_interp/interp_interface.lem b/src/lem_interp/interp_interface.lem index baa20ada..e0c656eb 100644 --- a/src/lem_interp/interp_interface.lem +++ b/src/lem_interp/interp_interface.lem @@ -135,6 +135,14 @@ instance (Ord address) let (>=) a1 a2 = (addressCompare a1 a2) <> LT end +let addressEqual a1 a2 = (addressCompare a1 a2) = EQ + +instance (Eq address) + let (=) = addressEqual + let (<>) x y = not (addressEqual x y) +end + + instance (Ord register_value) let compare = defaultCompare let (<) = defaultLess -- cgit v1.2.3