From fe0578a2fba61f7c29f2d79df346c1695d2fc54b Mon Sep 17 00:00:00 2001 From: nyash-codex Date: Sun, 28 Sep 2025 02:11:12 +0900 Subject: [PATCH] llvm-harness: add optional NYASH_LLVM_TRACE_CALLS to print mir_call callee (includes Method.certainty) for diagnostics; no behavior change --- src/llvm_py/instructions/mir_call.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/llvm_py/instructions/mir_call.py b/src/llvm_py/instructions/mir_call.py index eb2f4361..65440117 100644 --- a/src/llvm_py/instructions/mir_call.py +++ b/src/llvm_py/instructions/mir_call.py @@ -35,6 +35,25 @@ def lower_mir_call(owner, builder: ir.IRBuilder, mir_call: Dict[str, Any], dst_v # Parse callee type callee_type = callee.get("type") + # Optional trace: dump callee info (including certainty for Method) + if os.getenv('NYASH_LLVM_TRACE_CALLS') == '1': + try: + evt = { 'type': callee_type } + if callee_type == 'Global': + evt.update({'name': callee.get('name')}) + elif callee_type == 'Method': + evt.update({ + 'box_name': callee.get('box_name'), + 'method': callee.get('method'), + 'receiver': callee.get('receiver'), + 'certainty': callee.get('certainty'), + }) + elif callee_type == 'Extern': + evt.update({'name': callee.get('name')}) + print(json.dumps({'phase':'llvm','cat':'mir_call','event':evt})) + except Exception: + pass + if callee_type == "Global": # Global function call (e.g., print, panic) func_name = callee.get("name") @@ -633,4 +652,4 @@ def lower_extern_call(builder, module, extern_name, args, dst_vid, vmap, resolve if isinstance(ret_type, ir.VoidType): vmap[dst_vid] = ir.Constant(i64, 0) else: - vmap[dst_vid] = result \ No newline at end of file + vmap[dst_vid] = result