[pypy-commit] pypy ssa-flow: Don't pass unchanged Variable objects through links
rlamy
noreply at buildbot.pypy.org
Wed Nov 12 19:43:12 CET 2014
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: ssa-flow
Changeset: r74490:43ff4ed9e9ec
Date: 2013-08-15 20:19 +0100
http://bitbucket.org/pypy/pypy/changeset/43ff4ed9e9ec/
Log: Don't pass unchanged Variable objects through links
Remove incorrect hack in SSA_to_SSI
diff --git a/rpython/flowspace/flowcontext.py b/rpython/flowspace/flowcontext.py
--- a/rpython/flowspace/flowcontext.py
+++ b/rpython/flowspace/flowcontext.py
@@ -111,12 +111,11 @@
def guessbool(self, ctx, w_condition):
block = self.crnt_block
- vars = block.getvariables()
links = []
for case in [False, True]:
- egg = EggBlock(vars, block, case)
+ egg = EggBlock([], block, case)
ctx.pendingblocks.append(egg)
- link = Link(vars, egg, case)
+ link = Link([], egg, case)
links.append(link)
block.exitswitch = w_condition
@@ -133,16 +132,16 @@
links = []
for case in [None] + list(cases):
if case is not None:
- assert block.operations[-1].result is bvars[-1]
- vars = bvars[:-1]
- vars2 = bvars[:-1]
if case is Exception:
last_exc = Variable('last_exception')
else:
last_exc = Constant(case)
last_exc_value = Variable('last_exc_value')
- vars.extend([last_exc, last_exc_value])
- vars2.extend([Variable(), Variable()])
+ vars = [last_exc, last_exc_value]
+ vars2 = [Variable(), Variable()]
+ else:
+ vars = []
+ vars2 = []
egg = EggBlock(vars2, block, case)
ctx.pendingblocks.append(egg)
link = Link(vars, egg, case)
diff --git a/rpython/translator/backendopt/ssa.py b/rpython/translator/backendopt/ssa.py
--- a/rpython/translator/backendopt/ssa.py
+++ b/rpython/translator/backendopt/ssa.py
@@ -138,15 +138,6 @@
other's variables directly, without having to pass and rename them along
links).
"""
- seen = set()
- for link in graph.iterlinks():
- mapping = {}
- seen.update(link.args)
- for arg in link.target.inputargs:
- if arg in seen and isinstance(arg, Variable):
- mapping[arg] = Variable(arg)
- link.target.renamevariables(mapping)
-
entrymap = mkentrymap(graph)
del entrymap[graph.startblock]
builder = DataFlowFamilyBuilder(graph)
diff --git a/rpython/translator/simplify.py b/rpython/translator/simplify.py
--- a/rpython/translator/simplify.py
+++ b/rpython/translator/simplify.py
@@ -75,10 +75,12 @@
outputargs = []
for v in exit.args:
if isinstance(v, Variable):
- # this variable is valid in the context of block1
- # but it must come from 'link'
- i = block1.inputargs.index(v)
- v = link.args[i]
+ try:
+ i = block1.inputargs.index(v)
+ v = link.args[i]
+ except ValueError:
+ # the variable was passed implicitly to block1
+ pass
outputargs.append(v)
link.args = outputargs
link.target = exit.target
More information about the pypy-commit
mailing list