diff options
| author | Kathy Gray | 2015-05-18 13:18:24 +0100 |
|---|---|---|
| committer | Kathy Gray | 2015-05-18 13:18:24 +0100 |
| commit | 2e69c321a035d6ae7dfd995cb0efb3e210dc4512 (patch) | |
| tree | d4acdc1690cd0eaf2ca71ba8831a071111ca02fe /src | |
| parent | 5fef35e24e69a4cce5e113a90c9ea2fb02b318bc (diff) | |
Add equality check for addresses
And fix match failure problem (hopefully)
Diffstat (limited to 'src')
| -rw-r--r-- | src/lem_interp/interp.lem | 2 | ||||
| -rw-r--r-- | src/lem_interp/interp_interface.lem | 8 |
2 files changed, 10 insertions, 0 deletions
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 |
