Description
The following code works when compiling to LLVM, but throws errors when I attempt to show the C and C++ source code.
I'm using LPython v0.19.0 on Ubuntu Linux 20.04.
Python code:
from lpython import i32, f32
def add_list(x: list[f32]) -> f32:
sum: f32 = f32(0.0)
i: i32
for i in range(len(x)):
sum = sum + f32(x[i])
return sum
def create_list(n: i32) -> list[f32]:
x: list[f32]
i: i32
x = [f32(0.0)] * n
for i in range(n):
x[i] = f32(i)
return x
def main0():
x: list[f32] = create_list(i32(10))
# x = [f32(1.0), f32(2.0), f32(3.0)]
print(add_list(x))
if __name__ == "__main__":
main0()
Output of ./src/bin/lpython --show-c examples/jamestest.py
:
BFD: DWARF error: section .debug_info is larger than its filesize! (0x93ef57 vs 0x530ea0)
Traceback (most recent call last):
Binary file "/home/james/code/lpython_dir/lpython/src/bin/lpython", in _start()
Binary file "/lib/x86_64-linux-gnu/libc.so.6", in __libc_start_main()
File "/home/james/code/lpython_dir/lpython/src/bin/lpython.cpp", line 1804, in ??
return emit_c(arg_file, runtime_library_dir, lpython_pass_manager,
File "/home/james/code/lpython_dir/lpython/src/bin/lpython.cpp", line 361, in ??
auto res = LCompilers::asr_to_c(al, *asr, diagnostics, compiler_options, 0);
File "/home/james/code/lpython_dir/lpython/src/libasr/codegen/asr_to_c.cpp", line 1418, in LCompilers::asr_to_c[abi:cxx11](Allocator&, LCompilers::ASR::TranslationUnit_t&, LCompilers::diag::Diagnostics&, LCompilers::CompilerOptions&, long)
v.visit_asr((ASR::asr_t &)asr);
File "/home/james/code/lpython_dir/lpython/src/libasr/../libasr/asr.h", line 4979, in LCompilers::ASR::BaseVisitor<LCompilers::ASRToCVisitor>::visit_asr(LCompilers::ASR::asr_t const&)
void visit_asr(const asr_t &b) { visit_asr_t(b, self()); }
File "/home/james/code/lpython_dir/lpython/src/libasr/../libasr/asr.h", line 4955, in ??
case asrType::unit: { v.visit_unit((const unit_t &)x); return; }
File "/home/james/code/lpython_dir/lpython/src/libasr/../libasr/asr.h", line 4980, in LCompilers::ASR::BaseVisitor<LCompilers::ASRToCVisitor>::visit_unit(LCompilers::ASR::unit_t const&)
void visit_unit(const unit_t &b) { visit_unit_t(b, self()); }
File "/home/james/code/lpython_dir/lpython/src/libasr/../libasr/asr.h", line 4692, in ??
case unitType::TranslationUnit: { v.visit_TranslationUnit((const TranslationUnit_t &)x); return; }
File "/home/james/code/lpython_dir/lpython/src/libasr/codegen/asr_to_c.cpp", line 693, in LCompilers::ASRToCVisitor::visit_TranslationUnit(LCompilers::ASR::TranslationUnit_t const&)
visit_symbol(*mod);
File "/home/james/code/lpython_dir/lpython/src/libasr/../libasr/asr.h", line 4982, in LCompilers::ASR::BaseVisitor<LCompilers::ASRToCVisitor>::visit_symbol(LCompilers::ASR::symbol_t const&)
void visit_symbol(const symbol_t &b) { visit_symbol_t(b, self()); }
File "/home/james/code/lpython_dir/lpython/src/libasr/../libasr/asr.h", line 4701, in ??
case symbolType::Module: { v.visit_Module((const Module_t &)x); return; }
File "/home/james/code/lpython_dir/lpython/src/libasr/codegen/asr_to_c.cpp", line 815, in LCompilers::ASRToCVisitor::visit_Module(LCompilers::ASR::Module_t const&)
visit_Function(*s);
File "/home/james/code/lpython_dir/lpython/src/libasr/../libasr/codegen/asr_to_c_cpp.h", line 814, in LCompilers::BaseCCPPVisitor<LCompilers::ASRToCVisitor>::visit_Function(LCompilers::ASR::Function_t const&)
self().visit_stmt(*x.m_body[i]);
File "/home/james/code/lpython_dir/lpython/src/libasr/../libasr/asr.h", line 4999, in LCompilers::ASR::BaseVisitor<LCompilers::ASRToCVisitor>::visit_stmt(LCompilers::ASR::stmt_t const&)
void visit_stmt(const stmt_t &b) { visit_stmt_t(b, self()); }
File "/home/james/code/lpython_dir/lpython/src/libasr/../libasr/asr.h", line 4725, in ??
case stmtType::Assignment: { v.visit_Assignment((const Assignment_t &)x); return; }
File "/home/james/code/lpython_dir/lpython/src/libasr/../libasr/codegen/asr_to_c_cpp.h", line 1272, in LCompilers::BaseCCPPVisitor<LCompilers::ASRToCVisitor>::visit_Assignment(LCompilers::ASR::Assignment_t const&)
self().visit_expr(*x.m_value);
File "/home/james/code/lpython_dir/lpython/src/libasr/../libasr/asr.h", line 5043, in LCompilers::ASR::BaseVisitor<LCompilers::ASRToCVisitor>::visit_expr(LCompilers::ASR::expr_t const&)
void visit_expr(const expr_t &b) { visit_expr_t(b, self()); }
File "/home/james/code/lpython_dir/lpython/src/libasr/../libasr/asr.h", line 4865, in ??
case exprType::ListRepeat: { v.visit_ListRepeat((const ListRepeat_t &)x); return; }
LCompilersException: visit_ListRepeat() not implemented
Output of ./src/bin/lpython --show-cpp examples/jamestest.py
code generation error: Type number '7' not supported
--> examples/jamestest.py:3:14
|
3 | def add_list(x: list[f32]) -> f32:
| ^^^^^^^^^^^^
Note: if any of the above error or warning messages are not clear or are lacking
context please report it to us (we consider that a bug that must be fixed).