about summary refs log tree commit diff stats
path: root/miasm2/expression/simplifications_common.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/expression/simplifications_common.py')
-rw-r--r--miasm2/expression/simplifications_common.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/miasm2/expression/simplifications_common.py b/miasm2/expression/simplifications_common.py
index d662cf3d..4f712bf0 100644
--- a/miasm2/expression/simplifications_common.py
+++ b/miasm2/expression/simplifications_common.py
@@ -208,6 +208,12 @@ def simp_cst_propagation(e_s, e):
         args0 = args[0].args[0]
         args = [args0, args1]
 
+    # A >> X >> Y  =>  A >> (X+Y)
+    if (op in ['<<', '>>'] and
+        isinstance(args[0], ExprOp) and
+        args[0].op == op):
+        args = [args[0].args[0], args[0].args[1] + args[1]]
+
     # ((A & A.mask)
     if op == "&" and args[-1] == e.mask:
         return ExprOp('&', *args[:-1])