| Server IP : 217.160.0.135 / Your IP : 216.73.217.85 Web Server : Apache System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64 User : sws1074145052 ( 1074145052) PHP Version : 8.3.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /lib/python3/dist-packages/pythran/optimizations/__pycache__/ |
Upload File : |
�
cR�au � � � d Z ddlmZmZmZ ddlmZ ddlmZ ddl m
Z
ddlZ G d� dej
� � Z G d� d e� � ZdS )
z* DeadCodeElimination remove useless code. � )�PureExpressions�DefUseChains� Ancestors)�OMPDirective)�TransformationNc � � e Zd Zd� Zd� ZdS )�ClumsyOpenMPDependencyHandlerc �, � t � � | _ d S �N)�set� blacklist)�selfs �M/usr/lib/python3/dist-packages/pythran/optimizations/dead_code_elimination.py�__init__z&ClumsyOpenMPDependencyHandler.__init__
s � �������� c � � |j D ];}t |t j � � r| j � |j � � �<|S r )�deps�
isinstance�ast�Namer
�add�id)r �node�deps r �visit_OMPDirectivez0ClumsyOpenMPDependencyHandler.visit_OMPDirective sE � ��9� +� +�C��#�s�x�(�(�
+���"�"�3�6�*�*�*���r N)�__name__�
__module__�__qualname__r r � r r r r s2 � � � � � �� � �� � � � r r c �P � � e Zd ZdZ� fd�Zd� Zd� Zd� Zd� Zd� Z d� Z
� fd �Z� xZS )
�DeadCodeEliminationa�
Remove useless statement like:
- assignment to unused variables
- remove alone pure statement
- remove empty if
>>> import gast as ast
>>> from pythran import passmanager, backend
>>> pm = passmanager.PassManager("test")
>>> node = ast.parse("def foo(): a = [2, 3]; return 1")
>>> _, node = pm.apply(DeadCodeElimination, node)
>>> print(pm.dump(backend.Python, node))
def foo():
pass
return 1
>>> node = ast.parse("def foo(): 'a simple string'; return 1")
>>> _, node = pm.apply(DeadCodeElimination, node)
>>> print(pm.dump(backend.Python, node))
def foo():
pass
return 1
>>> node = ast.parse('''
... def bar(a):
... return a
... def foo(a):
... bar(a)
... return 1''')
>>> _, node = pm.apply(DeadCodeElimination, node)
>>> print(pm.dump(backend.Python, node))
def bar(a):
return a
def foo(a):
pass
return 1
c � �� t t | � � � t t t
� � t
� � | _ d S r )�superr! r r r r r r
)r � __class__s �r r zDeadCodeElimination.__init__; s? �� �
�!�4�(�(�1�1�/�2>�2;� =� =� =� ������r c � � t |t j � � rC|j | j v rdS | j j | }t |� � � � � S dS �NT) r r r r r
�def_use_chains�chains�bool�users)r r �chains r �used_targetzDeadCodeElimination.used_targetA sU � ��d�C�H�%�%� '��w�$�.�(�(��t��'�.�t�4�E�����
�
�&�&�&��tr c � � t � � }|� |� � |j | _ | � |� � S r )r �visitr
�
generic_visit)r r �codhs r �visit_FunctionDefz%DeadCodeElimination.visit_FunctionDefI s<