| Server IP : 217.160.0.135 / Your IP : 216.73.216.115 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�az � �v � d Z ddlmZmZmZmZ ddlmZ ddlmZ ddl m
Z
ddlZddl
mZ G d� d e� � ZdS )
z+ Simplify modulo computation based on index� )�UseDefChains� Ancestors�Aliases�RangeValues)�Identifiers)�Transformation)�MODULESN)�deepcopyc �* � e Zd ZdZd� Zd� Zd� Zd� ZdS )�ModIndexa]
Simplify modulo on loop index
>>> import gast as ast
>>> from pythran import passmanager, backend
>>> pm = passmanager.PassManager("test")
>>> code = """
... def foo(x):
... y = builtins.len(x)
... for i in builtins.range(8):
... z = i % y"""
>>> node = ast.parse(code)
>>> _, node = pm.apply(ModIndex, node)
>>> print(pm.dump(backend.Python, node))
def foo(x):
y = builtins.len(x)
i_m = ((0 - 1) % y)
for i in builtins.range(8):
i_m = (0 if ((i_m + 1) == y) else (i_m + 1))
z = i_m
c � � t j | t t t t
t � � t � � | _ d S )N) r �__init__r r r r r �dict� loops_mod)�selfs �@/usr/lib/python3/dist-packages/pythran/optimizations/modindex.pyr zModIndex.__init__# s3 � ����l�I�w� +�[� :� :� :�������� c �\ � | j | }t |� � dk o|d j S )N� r )�use_def_chains�len�node)r r �chains r �
single_defzModIndex.single_def( s* � ��#�D�)���5�z�z�Q��0�5��8�=�0r c
�~ � t |j t j � � s| � |� � S t |j t j � � s| � |� � S | � |j � � }|s| � |� � S | j |j j j
dk r| � |� � S t |j t j � � s| � |� � S | � |j � � }|s| � |� � S | j | d }t |t j
� � s| � |� � S t |j t j � � s| � |� � S || j | v r| � |� � S d }| j |j j D ]}|t$ d d u r|}� |�| � |� � S |j j dz }d}|| j v r.d� |j j |� � }|dz
}|| j v �.|j j } t- | � � dk r| d nt j dd � � }
t j t j |t j � � d d � � gt j t j t7 |
� � t j � � t j dd � � � � t j � � t7 |j � � � � d � � }t j t j |t j � � d d � � t j � � t j dd � � � � }t j t j |t j � � d d � � gt j t j |t j! � � gt7 |j � � g� � t j dd � � t7 |� � � � d � � }
| j"