diff --git a/loopy/program.py b/loopy/program.py index 510f9ec8662430c1d9bee65836a967d5eb6fdd22..4428e9823ac48a9dd3743001b933b49aabcc578c 100644 --- a/loopy/program.py +++ b/loopy/program.py @@ -563,7 +563,7 @@ class ProgramCallablesInfo(ImmutableRecord): num_times_callables_called[func_id] -= instances - if num_times_callables_called == 0: + if num_times_callables_called[func_id] == 0: num_times_callables_called.pop(func_id) history.pop(func_id) resolved_functions.pop(func_id) diff --git a/loopy/transform/callable.py b/loopy/transform/callable.py index 0edf5697a4cac50609803379c188877c43d8ea31..3549d1b757bf1cb64a339468e8a576cf76a43193 100644 --- a/loopy/transform/callable.py +++ b/loopy/transform/callable.py @@ -570,11 +570,12 @@ def inline_callable_kernel(program, function_name): from loopy.preprocess import infer_arg_descr program = infer_arg_descr(program) program_callables_info = program.program_callables_info + old_program_callables_info = program_callables_info.copy() edited_callable_kernels = {} - for func_id, in_knl_callable in program.program_callables_info.items(): - if function_name not in program_callables_info.history[func_id] and ( + for func_id, in_knl_callable in old_program_callables_info.items(): + if function_name not in old_program_callables_info.history[func_id] and ( isinstance(in_knl_callable, CallableKernel)): caller_kernel = in_knl_callable.subkernel caller_kernel, program_callables_info = ( @@ -594,6 +595,8 @@ def inline_callable_kernel(program, function_name): program_callables_info = program_callables_info.copy( resolved_functions=new_resolved_functions) + return program.copy(program_callables_info=program_callables_info) + # }}}