B
     \                 @   s,   d Z ddlmZ ddlmZ edd ZdS )z
This file provides internal compiler utilities that support certain special
operations with tuple and workarounds for limitations enforced in userland.
    )alloca_once)	intrinsicc             C   s   dd }||||j }||fS )a  Return a copy of the tuple with item at *idx* replaced with *val*.

    Operation: ``out = tup[:idx] + (val,) + tup[idx + 1:]

    **Warning**

    - No boundchecking.
    - The dtype of the tuple cannot be changed.
      *val* is always cast to the existing dtype of the tuple.
    c       	      S   sR   |\}}}t ||j}||| |j||d|gdd}||| ||S )Nr   T)Zinbounds)r   typeZstoreZgepload)	contextZbuilderZ	signatureargstupidxvalstackZoffptr r   1lib/python3.7/site-packages/numba/unsafe/tuple.pycodegen   s    
ztuple_setitem.<locals>.codegen)Zdtype)Z	typingctxr   r	   r
   r   Zsigr   r   r   tuple_setitem
   s    	r   N)__doc__Znumba.cgutilsr   Znumba.extendingr   r   r   r   r   r   <module>   s   