def test_alias_ctypes(self): # use xxnrm2 to test call a C function with ctypes from numba.targets.linalg import _BLAS xxnrm2 = _BLAS().numba_xxnrm2(types.float64) def remove_dead_xxnrm2(rhs, lives, call_list): if call_list == [xxnrm2]: return rhs.args[4].name not in lives return False # adding this handler has no-op effect since this function won't match # anything else but it's a bit cleaner to save the state and recover old_remove_handlers = remove_call_handlers[:] remove_call_handlers.append(remove_dead_xxnrm2) def func(ret): a = np.ones(4) xxnrm2(100, 4, a.ctypes, 1, ret.ctypes) A1 = np.zeros(1) A2 = A1.copy() try: pfunc = self.compile_parallel(func, (numba.typeof(A1),)) numba.njit(func)(A1) pfunc(A2) finally: # recover global state remove_call_handlers[:] = old_remove_handlers self.assertEqual(A1[0], A2[0])