diff --git a/src/libasr/codegen/asr_to_llvm.cpp b/src/libasr/codegen/asr_to_llvm.cpp index fc00b0b142..0d92f7377b 100644 --- a/src/libasr/codegen/asr_to_llvm.cpp +++ b/src/libasr/codegen/asr_to_llvm.cpp @@ -2776,9 +2776,11 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor llvm::StructType* array_type = static_cast( llvm_utils->get_type_from_ttype_t_util(x.m_type, module.get())); llvm::Constant *ptr = module->getOrInsertGlobal(x.m_name, array_type); - module->getNamedGlobal(x.m_name)->setInitializer( - llvm::ConstantStruct::get(array_type, - llvm::Constant::getNullValue(array_type))); + if (!external) { + module->getNamedGlobal(x.m_name)->setInitializer( + llvm::ConstantStruct::get(array_type, + llvm::Constant::getNullValue(array_type))); + } llvm_symtab[h] = ptr; } else if (x.m_type->type == ASR::ttypeType::Logical) { llvm::Constant *ptr = module->getOrInsertGlobal(x.m_name, diff --git a/src/lpython/tests/test_llvm.cpp b/src/lpython/tests/test_llvm.cpp index 055e052dd9..945f77c72e 100644 --- a/src/lpython/tests/test_llvm.cpp +++ b/src/lpython/tests/test_llvm.cpp @@ -1450,6 +1450,23 @@ def my_concat(x: str, y: str) -> str: CHECK(std::strcmp(r.result.str, "Python REPL") == 0); } +TEST_CASE("PythonCompiler Array 1") { + CompilerOptions cu; + cu.po.disable_main = true; + cu.emit_debug_line_column = false; + cu.generate_object_code = false; + cu.interactive = true; + cu.po.runtime_library_dir = LCompilers::LPython::get_runtime_library_dir(); + PythonCompiler e(cu); + LCompilers::Result + r = e.evaluate2("i: i32[10] = empty(10, dtype=int32)"); + CHECK(r.ok); + CHECK(r.result.type == PythonCompiler::EvalResult::statement); + r = e.evaluate2("print(i)"); + CHECK(r.ok); + CHECK(r.result.type == PythonCompiler::EvalResult::statement); +} + TEST_CASE("PythonCompiler asr verify 1") { CompilerOptions cu; cu.po.disable_main = true;