From d29e870a5d3db3909bc1fcc6ac087cbd24d7a253 Mon Sep 17 00:00:00 2001 From: Kaushik Kulkarni <kaushikcfd@gmail.com> Date: Mon, 6 Aug 2018 05:05:41 -0500 Subject: [PATCH] basic inlining works. --- loopy/program.py | 2 +- loopy/transform/callable.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/loopy/program.py b/loopy/program.py index 510f9ec86..4428e9823 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 0edf5697a..3549d1b75 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) + # }}} -- GitLab