diff --git a/src/libasr/codegen/asr_to_llvm.cpp b/src/libasr/codegen/asr_to_llvm.cpp index f8b9d7e407..6d5844734c 100644 --- a/src/libasr/codegen/asr_to_llvm.cpp +++ b/src/libasr/codegen/asr_to_llvm.cpp @@ -3791,7 +3791,9 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor } } std::string fn_name; - if (ASRUtils::get_FunctionType(x)->m_abi == ASR::abiType::BindC) { + if (compiler_options.interactive && startswith(sym_name, "__main__global_stmts")) { + fn_name = sym_name; + } else if (ASRUtils::get_FunctionType(x)->m_abi == ASR::abiType::BindC) { if (ASRUtils::get_FunctionType(x)->m_bindc_name) { fn_name = ASRUtils::get_FunctionType(x)->m_bindc_name; } else { diff --git a/src/lpython/python_evaluator.cpp b/src/lpython/python_evaluator.cpp index f7314fcb32..67f2b4df69 100644 --- a/src/lpython/python_evaluator.cpp +++ b/src/lpython/python_evaluator.cpp @@ -85,10 +85,8 @@ Result PythonCompiler::evaluate( } // ASR -> LLVM - std::string module_prefix = "__module___main___"; std::string module_name = "__main__"; - std::string sym_name = module_name + "global_stmts_" + std::to_string(eval_count) + "__"; - run_fn = module_prefix + sym_name; + run_fn = module_name + "global_stmts_" + std::to_string(eval_count) + "__"; Result> res3 = get_llvm3(*asr, pass_manager, diagnostics, lm.files.back().in_filename); @@ -116,7 +114,7 @@ Result PythonCompiler::evaluate( if (call_run_fn) { ASR::down_cast(symbol_table->resolve_symbol(module_name))->m_symtab - ->erase_symbol(sym_name); + ->erase_symbol(run_fn); } eval_count++;