-
Notifications
You must be signed in to change notification settings - Fork 173
Closed
Description
The following compiles successfully:
def test_i32() -> i32:
a : i32 = 5
a = a + a * 10
return a
print(test_i32())(base) sarthak@pop-os:~/lpython/examples$ lpython --fast add.py
55But the same program using f64 instead of i32 gives the error:
LCompilersException: Module 'lfortran_intrinsic_optimization' not declared in the current source and the modfile was not found:
def test_i64() -> f64:
a : f64 = 5.00
a = a + a * 10.00
return a
# Note: It works if we do
# b : f64 = a * 10.00
# a = a + b
print(test_i64())Full Error
(base) sarthak@pop-os:~/lpython/examples$ lpython --fast add.py
Internal Compiler Error: Unhandled exception
Traceback (most recent call last):
Binary file "/home/sarthak/lpython/src/bin/lpython", in _start()
File "./csu/../csu/libc-start.c", line 392, in __libc_start_main_impl()
File "./csu/../sysdeps/nptl/libc_start_call_main.h", line 58, in __libc_start_call_main()
File "/home/sarthak/lpython/src/bin/lpython.cpp", line 1750, in ??
err = compile_python_to_object_file(arg_file, tmp_o, runtime_library_dir,
File "/home/sarthak/lpython/src/bin/lpython.cpp", line 750, in ??
res = fe.get_llvm3(*asr, pass_manager, diagnostics, infile);
File "/home/sarthak/lpython/src/lpython/python_evaluator.cpp", line 58, in LCompilers::PythonCompiler::get_llvm3(LCompilers::ASR::TranslationUnit_t&, LCompilers::PassManager&, LCompilers::diag::Diagnostics&, std::__cxx11::basic_string, std::allocator > const&)
run_fn, infile);
File "/home/sarthak/lpython/src/libasr/codegen/asr_to_llvm.cpp", line 7027, in LCompilers::asr_to_llvm(LCompilers::ASR::TranslationUnit_t&, LCompilers::diag::Diagnostics&, llvm::LLVMContext&, Allocator&, LCompilers::PassManager&, LCompilers::CompilerOptions&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)
pass_manager.apply_passes(al, &asr, pass_options, diagnostics);
File "/home/sarthak/lpython/src/libasr/pass/pass_manager.h", line 214, in LCompilers::PassManager::apply_passes(Allocator&, LCompilers::ASR::TranslationUnit_t*, LCompilers::PassOptions&, LCompilers::diag::Diagnostics&)
_apply_passes(al, asr, _with_optimization_passes, pass_options,
File "/home/sarthak/lpython/src/libasr/pass/pass_manager.h", line 106, in LCompilers::PassManager::_apply_passes(Allocator&, LCompilers::ASR::TranslationUnit_t*, std::vector, std::allocator >, std::allocator, std::allocator > > >&, LCompilers::PassOptions&, LCompilers::diag::Diagnostics&)
_passes_db[passes[i]](al, *asr, pass_options);
File "/home/sarthak/lpython/src/libasr/pass/fma.cpp", line 172, in LCompilers::pass_replace_fma(Allocator&, LCompilers::ASR::TranslationUnit_t&, LCompilers::PassOptions const&)
v.visit_TranslationUnit(unit);
File "/home/sarthak/lpython/src/libasr/../libasr/asr.h", line 4673, in LCompilers::ASR::BaseWalkVisitor::visit_TranslationUnit(LCompilers::ASR::TranslationUnit_t const&)
this->visit_symbol(*a.second);
File "/home/sarthak/lpython/src/libasr/../libasr/asr.h", line 4480, in LCompilers::ASR::BaseVisitor::visit_symbol(LCompilers::ASR::symbol_t const&)
void visit_symbol(const symbol_t &b) { visit_symbol_t(b, self()); }
File "/home/sarthak/lpython/src/libasr/../libasr/asr.h", line 4220, in ??
case symbolType::Module: { v.visit_Module((const Module_t &)x); return; }
File "/home/sarthak/lpython/src/libasr/../libasr/asr.h", line 4686, in LCompilers::ASR::BaseWalkVisitor::visit_Module(LCompilers::ASR::Module_t const&)
this->visit_symbol(*a.second);
File "/home/sarthak/lpython/src/libasr/../libasr/asr.h", line 4480, in LCompilers::ASR::BaseVisitor::visit_symbol(LCompilers::ASR::symbol_t const&)
void visit_symbol(const symbol_t &b) { visit_symbol_t(b, self()); }
File "/home/sarthak/lpython/src/libasr/../libasr/asr.h", line 4221, in ??
case symbolType::Function: { v.visit_Function((const Function_t &)x); return; }
File "/home/sarthak/lpython/src/libasr/../libasr/pass/pass_utils.h", line 281, in LCompilers::PassUtils::SkipOptimizationFunctionVisitor::visit_Function(LCompilers::ASR::Function_t const&)
PassUtils::PassVisitor::visit_Function(x);
File "/home/sarthak/lpython/src/libasr/../libasr/pass/pass_utils.h", line 192, in LCompilers::PassUtils::PassVisitor::visit_Function(LCompilers::ASR::Function_t const&)
transform_stmts(xx.m_body, xx.n_body);
File "/home/sarthak/lpython/src/libasr/../libasr/pass/pass_utils.h", line 144, in LCompilers::PassUtils::PassVisitor::transform_stmts(LCompilers::ASR::stmt_t**&, unsigned long&)
self().visit_stmt(*m_body[i]);
File "/home/sarthak/lpython/src/libasr/../libasr/asr.h", line 4495, in LCompilers::ASR::BaseVisitor::visit_stmt(LCompilers::ASR::stmt_t const&)
void visit_stmt(const stmt_t &b) { visit_stmt_t(b, self()); }
File "/home/sarthak/lpython/src/libasr/../libasr/asr.h", line 4242, in ??
case stmtType::Assignment: { v.visit_Assignment((const Assignment_t &)x); return; }
File "/home/sarthak/lpython/src/libasr/pass/fma.cpp", line 130, in LCompilers::FMAVisitor::visit_Assignment(LCompilers::ASR::Assignment_t const&)
visit_expr(*x.m_value);
File "/home/sarthak/lpython/src/libasr/../libasr/asr.h", line 4540, in LCompilers::ASR::BaseVisitor::visit_expr(LCompilers::ASR::expr_t const&)
void visit_expr(const expr_t &b) { visit_expr_t(b, self()); }
File "/home/sarthak/lpython/src/libasr/../libasr/asr.h", line 4308, in ??
case exprType::RealBinOp: { v.visit_RealBinOp((const RealBinOp_t &)x); return; }
File "/home/sarthak/lpython/src/libasr/pass/fma.cpp", line 120, in LCompilers::FMAVisitor::visit_RealBinOp(LCompilers::ASR::RealBinOp_t const&)
fma_var = PassUtils::get_fma(other_expr, first_arg, second_arg,
File "/home/sarthak/lpython/src/libasr/pass/pass_utils.cpp", line 632, in LCompilers::PassUtils::get_fma(LCompilers::ASR::expr_t*, LCompilers::ASR::expr_t*, LCompilers::ASR::expr_t*, Allocator&, LCompilers::ASR::TranslationUnit_t&, LCompilers::PassOptions&, LCompilers::SymbolTable*&, LCompilers::Location&, std::function, std::allocator > const&, LCompilers::Location const&)>)
ASR::symbol_t *v = import_generic_procedure("fma", "lfortran_intrinsic_optimization",
File "/home/sarthak/lpython/src/libasr/pass/pass_utils.cpp", line 405, in LCompilers::PassUtils::import_generic_procedure(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, Allocator&, LCompilers::ASR::TranslationUnit_t&, LCompilers::PassOptions&, LCompilers::SymbolTable*&, LCompilers::Location&)
ASR::Module_t *m = ASRUtils::load_module(al, current_scope,
File "/home/sarthak/lpython/src/libasr/asr_utils.cpp", line 172, in LCompilers::ASRUtils::load_module(Allocator&, LCompilers::SymbolTable*, std::__cxx11::basic_string, std::allocator > const&, LCompilers::Location const&, bool, LCompilers::PassOptions&, bool, std::function, std::allocator > const&, LCompilers::Location const&)>)
err("Module '" + module_name + "' not declared in the current source and the modfile was not found",
File "/usr/include/c++/11/bits/std_function.h", line 590, in std::function, std::allocator > const&, LCompilers::Location const&)>::operator()(std::__cxx11::basic_string, std::allocator > const&, LCompilers::Location const&) const
return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...);
File "/usr/include/c++/11/bits/std_function.h", line 290, in ??
return std::__invoke_r<_Res>(*_Base::_M_get_pointer(__functor),
File "/usr/include/c++/11/bits/invoke.h", line 111, in ??
std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn),
File "/usr/include/c++/11/bits/invoke.h", line 61, in ??
{ return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); }
LCompilersException: Module 'lfortran_intrinsic_optimization' not declared in the current source and the modfile was not found
Note: This seems to be related to #723 (comment)
Metadata
Metadata
Assignees
Labels
No labels