diff python/ppci/codegen/canon.py @ 354:5477e499b039

Added some sort of string functionality
author Windel Bouwman
date Thu, 13 Mar 2014 18:59:06 +0100
parents e609d5296ee9
children c49459768aaa
line wrap: on
line diff
--- a/python/ppci/codegen/canon.py	Sun Mar 09 18:49:10 2014 +0100
+++ b/python/ppci/codegen/canon.py	Thu Mar 13 18:59:06 2014 +0100
@@ -64,13 +64,16 @@
     elif isinstance(exp, ir.Mem):
         exp.e = rewriteExp(exp.e, frame)
         return exp
+    elif isinstance(exp, ir.Addr):
+        exp.e = rewriteExp(exp.e, frame)
+        return exp
     elif isinstance(exp, ir.Call):
         exp.arguments = [rewriteExp(p, frame) for p in exp.arguments]
         # Rewrite call into eseq:
         t = newTemp()
         return ir.Eseq(ir.Move(t, exp), t)
     else:
-        raise NotImplementedError('NI: {}'.format(exp))
+        raise NotImplementedError('NI: {}, {}'.format(exp, type(exp)))
         
 # The flatten functions pull out seq instructions to the sequence list.
 
@@ -86,6 +89,9 @@
     elif isinstance(exp, ir.Mem):
         exp.e, s = flattenExp(exp.e)
         return exp, s
+    elif isinstance(exp, ir.Addr):
+        exp.e, s = flattenExp(exp.e)
+        return exp, s
     elif isinstance(exp, ir.Eseq):
         s = flattenStmt(exp.stmt)
         exp.e, se = flattenExp(exp.e)