Closed
Description
program deallocate_SIM
type, abstract :: toml_value
character(len=:), allocatable :: key
end type
type, extends(toml_value) :: toml_table
integer :: x
end type
type(toml_table) :: temp
allocate(character(len=3) :: temp%key)
deallocate(temp%key)
end program
LFortran Error:
lf) jinang_shah@JNSLAP:~/Desktop/lfortran$ lfortran c.f90
lfortran: /home/jinang_shah/conda_root/envs/lf/include/llvm/IR/Instructions.h:939: static llvm::GetElementPtrInst* llvm::GetElementPtrInst::Create(llvm::Type*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, const llvm::Twine&, llvm::Instruction*): Assertion `PointeeType == cast<PointerType>(Ptr->getType()->getScalarType())->getElementType()' failed.
Traceback (most recent call last):
Binary file "/home/jinang_shah/Desktop/lfortran/src/bin/lfortran", in _start
File "./csu/../csu/libc-start.c", line 360, in __libc_start_main
File "./csu/../sysdeps/nptl/libc_start_call_main.h", line 58, in __libc_start_call_main
File "/home/jinang_shah/Desktop/lfortran/src/bin/lfortran.cpp", line 2696, in main
return main_app(argc, argv);
File "/home/jinang_shah/Desktop/lfortran/src/bin/lfortran.cpp", line 2624, in main_app(int, char**)
err = compile_src_to_object_file(arg_file, tmp_o, compiler_options.time_report, false,
File "/home/jinang_shah/Desktop/lfortran/src/bin/lfortran.cpp", line 1168, in (anonymous namespace)::compile_src_to_object_file(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, bool, LCompilers::CompilerOptions&, LCompilers::PassManager&, bool)
res = fe.get_llvm3(*asr, lpm, diagnostics, infile, &time_opt);
File "/home/jinang_shah/Desktop/lfortran/src/lfortran/fortran_evaluator.cpp", line 393, in LCompilers::FortranEvaluator::get_llvm3(LCompilers::ASR::TranslationUnit_t&, LCompilers::PassManager&, LCompilers::diag::Diagnostics&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int*)
compiler_options, run_fn, "", infile);
File "/home/jinang_shah/Desktop/lfortran/src/libasr/codegen/asr_to_llvm.cpp", line 11462, in LCompilers::asr_to_llvm(LCompilers::ASR::TranslationUnit_t&, LCompilers::diag::Diagnostics&, llvm::LLVMContext&, Allocator&, LCompilers::PassManager&, LCompilers::CompilerOptions&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
v.visit_asr((ASR::asr_t&)asr);
File "/home/jinang_shah/Desktop/lfortran/src/libasr/../libasr/asr_base_visitor.h", line 325, in LCompilers::ASR::BaseVisitor<LCompilers::ASRToLLVMVisitor>::visit_asr(LCompilers::ASR::asr_t const&)
void visit_asr(const asr_t &b) { visit_asr_t(b, self()); }
File "/home/jinang_shah/Desktop/lfortran/src/libasr/../libasr/asr_base_visitor.h", line 301, in void LCompilers::ASR::visit_asr_t<LCompilers::ASRToLLVMVisitor>(LCompilers::ASR::asr_t const&, LCompilers::ASRToLLVMVisitor&)
case asrType::unit: { v.visit_unit((const unit_t &)x); return; }
File "/home/jinang_shah/Desktop/lfortran/src/libasr/../libasr/asr_base_visitor.h", line 326, in LCompilers::ASR::BaseVisitor<LCompilers::ASRToLLVMVisitor>::visit_unit(LCompilers::ASR::unit_t const&)
void visit_unit(const unit_t &b) { visit_unit_t(b, self()); }
File "/home/jinang_shah/Desktop/lfortran/src/libasr/../libasr/asr_base_visitor.h", line 22, in void LCompilers::ASR::visit_unit_t<LCompilers::ASRToLLVMVisitor>(LCompilers::ASR::unit_t const&, LCompilers::ASRToLLVMVisitor&)
case unitType::TranslationUnit: { v.visit_TranslationUnit((const TranslationUnit_t &)x); return; }
File "/home/jinang_shah/Desktop/lfortran/src/libasr/codegen/asr_to_llvm.cpp", line 1014, in LCompilers::ASRToLLVMVisitor::visit_TranslationUnit(LCompilers::ASR::TranslationUnit_t const&)
visit_symbol(*item.second);
File "/home/jinang_shah/Desktop/lfortran/src/libasr/../libasr/asr_base_visitor.h", line 328, in LCompilers::ASR::BaseVisitor<LCompilers::ASRToLLVMVisitor>::visit_symbol(LCompilers::ASR::symbol_t const&)
void visit_symbol(const symbol_t &b) { visit_symbol_t(b, self()); }
File "/home/jinang_shah/Desktop/lfortran/src/libasr/../libasr/asr_base_visitor.h", line 30, in void LCompilers::ASR::visit_symbol_t<LCompilers::ASRToLLVMVisitor>(LCompilers::ASR::symbol_t const&, LCompilers::ASRToLLVMVisitor&)
case symbolType::Program: { v.visit_Program((const Program_t &)x); return; }
File "/home/jinang_shah/Desktop/lfortran/src/libasr/codegen/asr_to_llvm.cpp", line 3494, in LCompilers::ASRToLLVMVisitor::visit_Program(LCompilers::ASR::Program_t const&)
this->visit_stmt(*x.m_body[i]);
File "/home/jinang_shah/Desktop/lfortran/src/libasr/../libasr/asr_base_visitor.h", line 345, in LCompilers::ASR::BaseVisitor<LCompilers::ASRToLLVMVisitor>::visit_stmt(LCompilers::ASR::stmt_t const&)
void visit_stmt(const stmt_t &b) { visit_stmt_t(b, self()); }
File "/home/jinang_shah/Desktop/lfortran/src/libasr/../libasr/asr_base_visitor.h", line 59, in void LCompilers::ASR::visit_stmt_t<LCompilers::ASRToLLVMVisitor>(LCompilers::ASR::stmt_t const&, LCompilers::ASRToLLVMVisitor&)
case stmtType::ExplicitDeallocate: { v.visit_ExplicitDeallocate((const ExplicitDeallocate_t &)x); return; }
File "/home/jinang_shah/Desktop/lfortran/src/libasr/codegen/asr_to_llvm.cpp", line 1367, in LCompilers::ASRToLLVMVisitor::visit_ExplicitDeallocate(LCompilers::ASR::ExplicitDeallocate_t const&)
visit_Deallocate(x);
File "/home/jinang_shah/Desktop/lfortran/src/libasr/codegen/asr_to_llvm.cpp", line 1306, in void LCompilers::ASRToLLVMVisitor::visit_Deallocate<LCompilers::ASR::ExplicitDeallocate_t>(LCompilers::ASR::ExplicitDeallocate_t const&)
char_ptr = llvm_utils->create_gep2(string_descriptor, tmp, 0);
File "/home/jinang_shah/Desktop/lfortran/src/libasr/codegen/llvm_utils.cpp", line 1566, in LCompilers::LLVMUtils::create_gep2(llvm::Type*, llvm::Value*, int)
return LLVMUtils::CreateGEP2(t, ds, idx_vec);
File "/home/jinang_shah/Desktop/lfortran/src/libasr/codegen/llvm_utils.cpp", line 1755, in LCompilers::LLVMUtils::CreateGEP2(llvm::Type*, llvm::Value*, std::vector<llvm::Value*, std::allocator<llvm::Value*> >&)
return builder->CreateGEP(t, x, idx);
File "/home/jinang_shah/conda_root/envs/lf/include/llvm/IR/IRBuilder.h", line 1773, in llvm::IRBuilderBase::CreateGEP(llvm::Type*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, llvm::Twine const&)
return Insert(GetElementPtrInst::Create(Ty, Ptr, IdxList), Name);
File "/home/jinang_shah/conda_root/envs/lf/include/llvm/IR/Instructions.h", line 939, in llvm::GetElementPtrInst::Create(llvm::Type*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, llvm::Twine const&, llvm::Instruction*)
assert(
File "./assert/./assert/assert.c", line 105, in __assert_fail
File "./assert/./assert/assert.c", line 96, in <invalid>
File "./stdlib/./stdlib/abort.c", line 79, in abort
File "./signal/../sysdeps/posix/raise.c", line 26, in raise
File "./nptl/./nptl/pthread_kill.c", line 43, in pthread_kill
Binary file "/lib/x86_64-linux-gnu/libc.so.6", in <invalid>
Abort: Signal SIGABRT (abort) received
Aborted (core dumped)