('push',),
)
+# TODO Some instructions may not touch the stack, so if these occur between a push and a drop we could still optimize
def push_drop_optimization(ir):
ir = tuple(ir)
yield ir[i]
i += 1
-# TODO This can be smarter
+# TODO We might be able to trace program flow to eliminate usages even if variables have the same name
def unused_pop_optimization(ir):
ir = tuple(ir)