File tree Expand file tree Collapse file tree 1 file changed +11
-3
lines changed
Expand file tree Collapse file tree 1 file changed +11
-3
lines changed Original file line number Diff line number Diff line change @@ -258,6 +258,10 @@ def _toposort(exprs):
258258 """
259259 Ensure the expression list is topologically sorted.
260260 """
261+ if not any (isinstance (e .lhs , CTemp ) for e in exprs ):
262+ # No CSE temps, no need to topological sort
263+ return exprs
264+
261265 dag = DAG (exprs )
262266
263267 for e0 in exprs :
@@ -269,9 +273,13 @@ def _toposort(exprs):
269273 dag .add_edge (e0 , e1 , force_add = True )
270274
271275 def choose_element (queue , scheduled ):
272- # Try to honor temporary names as much as possible
273- first = sorted (queue , key = lambda i : str (i .lhs )).pop (0 )
274- queue .remove (first )
276+ tmps = [i for i in queue if isinstance (i .lhs , CTemp )]
277+ if tmps :
278+ # Try to honor temporary names as much as possible
279+ first = sorted (tmps , key = lambda i : i .lhs .name ).pop (0 )
280+ queue .remove (first )
281+ else :
282+ first = queue .pop ()
275283 return first
276284
277285 processed = dag .topological_sort (choose_element )
You can’t perform that action at this time.
0 commit comments