about summary refs log tree commit diff stats
diff options
context:
space:
mode:
author <Varmin@Varmin-PCi7.localdomain>2018-02-12 18:41:43 +0100
committer <Varmin@Varmin-PCi7.localdomain>2018-02-12 18:41:43 +0100
commit5047f98e5d34784387b73849b4cb3eaae0a26c16 (patch)
tree8b055a45bfeab5b56e92427190f722c89912fd0e
parent0a2934e0a0744bffa300a6e8954f95defee255be (diff)
downloadmiasm-5047f98e5d34784387b73849b4cb3eaae0a26c16.tar.gz
miasm-5047f98e5d34784387b73849b4cb3eaae0a26c16.zip
changing index of simplification from 1 to -1 in A op 0 => 0
+ adding testcases
Diffstat (limited to '')
-rw-r--r--miasm2/expression/simplifications_common.py2
-rw-r--r--test/expression/simplifications.py4
2 files changed, 5 insertions, 1 deletions
diff --git a/miasm2/expression/simplifications_common.py b/miasm2/expression/simplifications_common.py
index f045830e..9953ea4b 100644
--- a/miasm2/expression/simplifications_common.py
+++ b/miasm2/expression/simplifications_common.py
@@ -137,7 +137,7 @@ def simp_cst_propagation(e_s, expr):
         return ExprOp('+', args[0], -args[1])
 
     # A op 0 => 0
-    if op_name in ['&', "*"] and args[1].is_int(0):
+    if op_name in ['&', "*"] and args[-1].is_int(0):
         return ExprInt(0, expr.size)
 
     # - (A + B +...) => -A + -B + -C
diff --git a/test/expression/simplifications.py b/test/expression/simplifications.py
index ad420621..6d17db10 100644
--- a/test/expression/simplifications.py
+++ b/test/expression/simplifications.py
@@ -134,6 +134,10 @@ to_test = [(ExprInt(1, 32) - ExprInt(1, 32), ExprInt(0, 32)),
     (ExprOp('*', a, b, c, ExprInt(0x12, 32))[0:17],
      ExprOp(
      '*', a[0:17], b[0:17], c[0:17], ExprInt(0x12, 17))),
+    (ExprOp('*', a, ExprInt(0x0, 32)),
+     ExprInt(0x0, 32)),
+    (ExprOp('&', a, ExprInt(0x0, 32)),
+     ExprInt(0x0, 32)),
     (ExprOp('*', a, ExprInt(0xffffffff, 32)),
      -a),
     (ExprOp('*', -a, -b, c, ExprInt(0x12, 32)),