Skip to content

Commit

Permalink
Remove useless normalization steps from PM pipeline
Browse files Browse the repository at this point in the history
  • Loading branch information
serge-sans-paille committed Mar 21, 2017
1 parent 80e2327 commit b8a8a11
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 18 deletions.
5 changes: 1 addition & 4 deletions pythran/middlend.py
Expand Up @@ -27,18 +27,15 @@ def refine(pm, node, optimizations):
pm.apply(ListCompToMap, node)
pm.apply(GenExpToImap, node)

pm.apply(NormalizeTuples, node)
pm.apply(RemoveLambdas, node)
pm.apply(NormalizeCompare, node)
pm.apply(RemoveNestedFunctions, node)
pm.apply(NormalizeCompare, node)
pm.gather(ExtendedSyntaxCheck, node)
pm.apply(ListCompToGenexp, node)
pm.apply(RemoveComprehension, node)
pm.apply(RemoveNamedArguments, node)

# sanitize input
pm.apply(NormalizeTuples, node)
pm.apply(RemoveNestedFunctions, node)
pm.apply(NormalizeReturn, node)
pm.apply(UnshadowParameters, node)
pm.apply(FalsePolymorphism, node)
Expand Down
10 changes: 6 additions & 4 deletions pythran/optimizations/gen_exp_to_imap.py
Expand Up @@ -2,7 +2,7 @@

from pythran.analyses import OptimizableComprehension
from pythran.passmanager import Transformation
from pythran.transformations import NormalizeTuples
from pythran.transformations.normalize_tuples import ConvertToTuple
from pythran.conversion import mangle

import gast as ast
Expand Down Expand Up @@ -34,8 +34,7 @@ class GenExpToImap(Transformation):
'''

def __init__(self):
Transformation.__init__(self, NormalizeTuples,
OptimizableComprehension)
Transformation.__init__(self, OptimizableComprehension)

def visit_Module(self, node):
self.generic_visit(node)
Expand Down Expand Up @@ -80,8 +79,11 @@ def visit_GeneratorExp(self, node):
annotation=None),
attr='product', ctx=ast.Load())

varid = variables[0].id # retarget this id, it's free
renamings = {v.id: (i,) for i, v in enumerate(variables)}
node.elt = ConvertToTuple(varid, renamings).visit(node.elt)
iterAST = ast.Call(prodName, iters, [])
varAST = ast.arguments([ast.Tuple(variables, ast.Store())],
varAST = ast.arguments([ast.Name(varid, ast.Param(), None)],
None, [], [], None, [])

imapName = ast.Attribute(
Expand Down
4 changes: 1 addition & 3 deletions pythran/optimizations/list_comp_to_genexp.py
Expand Up @@ -2,7 +2,6 @@

from pythran.analyses import PotentialIterator
from pythran.passmanager import Transformation
from pythran.transformations import NormalizeTuples

import gast as ast

Expand All @@ -27,8 +26,7 @@ def bar(n):
return foo((x for x in __builtin__.range(n)))
'''
def __init__(self):
Transformation.__init__(self, NormalizeTuples,
PotentialIterator)
Transformation.__init__(self, PotentialIterator)

def visit_ListComp(self, node):
self.generic_visit(node)
Expand Down
10 changes: 6 additions & 4 deletions pythran/optimizations/list_comp_to_map.py
Expand Up @@ -2,7 +2,7 @@

from pythran.analyses import OptimizableComprehension
from pythran.passmanager import Transformation
from pythran.transformations import NormalizeTuples
from pythran.transformations.normalize_tuples import ConvertToTuple
from pythran.conversion import mangle


Expand Down Expand Up @@ -32,8 +32,7 @@ class ListCompToMap(Transformation):
'''

def __init__(self):
Transformation.__init__(self, NormalizeTuples,
OptimizableComprehension)
Transformation.__init__(self, OptimizableComprehension)

def visit_Module(self, node):
self.use_itertools = False
Expand Down Expand Up @@ -87,8 +86,11 @@ def visit_ListComp(self, node):
annotation=None),
attr='product', ctx=ast.Load())

varid = varList[0].id # retarget this id, it's free
renamings = {v.id: (i,) for i, v in enumerate(varList)}
node.elt = ConvertToTuple(varid, renamings).visit(node.elt)
iterAST = ast.Call(prodName, iterList, [])
varAST = ast.arguments([ast.Tuple(varList, ast.Store())],
varAST = ast.arguments([ast.Name(varid, ast.Param(), None)],
None, [], [], None, [])

mapName = ast.Attribute(
Expand Down
7 changes: 4 additions & 3 deletions pythran/transformations/normalize_tuples.py
Expand Up @@ -8,7 +8,7 @@
from collections import OrderedDict


class _ConvertToTuple(ast.NodeTransformer):
class ConvertToTuple(ast.NodeTransformer):
def __init__(self, tuple_id, renamings):
self.tuple_id = tuple_id
self.renamings = renamings
Expand Down Expand Up @@ -74,6 +74,7 @@ def traverse_tuples(self, node, state, renamings):
raise NotImplementedError

def visit_comprehension(self, node):
node = self.generic_visit(node)
renamings = OrderedDict()
self.traverse_tuples(node.target, (), renamings)
if renamings:
Expand All @@ -93,7 +94,7 @@ def visit_AnyComp(self, node, *fields):
nnode.generators[i].target = ast.Name(
gtarget,
nnode.generators[i].target.ctx, None)
nnode = _ConvertToTuple(gtarget, g[1]).visit(nnode)
nnode = ConvertToTuple(gtarget, g[1]).visit(nnode)
self.update = True
for field in fields:
setattr(node, field, getattr(nnode, field))
Expand All @@ -120,7 +121,7 @@ def visit_Lambda(self, node):
if renamings:
nname = self.get_new_id()
node.args.args[i] = ast.Name(nname, ast.Param(), None)
node.body = _ConvertToTuple(nname, renamings).visit(node.body)
node.body = ConvertToTuple(nname, renamings).visit(node.body)
return node

def visit_Assign(self, node):
Expand Down

0 comments on commit b8a8a11

Please sign in to comment.