Skip to content

MREs for failing integration tests in simplifier pass #4738

Closed
@kmr-srbh

Description

This thread holds the MREs for tests which currently fail with the simplifier pass. I will try to create it for as many tests I can and add them here. Everybody is free to report and/or pick an MRE to work on it.

Activity

kmr-srbh

kmr-srbh commented on Sep 2, 2024

@kmr-srbh
Author
kmr-srbh

kmr-srbh commented on Sep 3, 2024

@kmr-srbh
Author
kmr-srbh

kmr-srbh commented on Sep 3, 2024

@kmr-srbh
Author
kmr-srbh

kmr-srbh commented on Sep 3, 2024

@kmr-srbh
Author
kmr-srbh

kmr-srbh commented on Sep 3, 2024

@kmr-srbh
MemberAuthor

arrays_op_18.f90

MRE

program arrays_op_18
   implicit none

   real, allocatable :: a(:)
   real :: b(2, 4)
   allocate(a(2))

   a = 5.0
   b = 6.0

   a = [b, a]

   print *, lbound(a, 1), ubound(a, 1)

end program

Output

GFortran

(base) saurabh-kumar@Awadh:~/Projects/System/lfortran$ gfortran ./examples/example.f90 && ./a.out
           1          10

LFortran

(base) saurabh-kumar@Awadh:~/Projects/System/lfortran$ lfortran ./examples/example.f90 --realloc-lhs
malloc(): corrupted top size
Aborted (core dumped)
kmr-srbh

kmr-srbh commented on Sep 3, 2024

@kmr-srbh
Author
kmr-srbh

kmr-srbh commented on Sep 3, 2024

@kmr-srbh
Author
kmr-srbh

kmr-srbh commented on Sep 3, 2024

@kmr-srbh
MemberAuthor

parameter_11.f90

MRE

program parameter_11
   integer, parameter :: n = 3
   real:: b(3,3)
   integer :: i,j

   b = reshape([((merge(i,0,i==j), i=1,3), j=1,3)], [n,n])
   print *, b
end program

Output

(base) saurabh-kumar@Awadh:~/Projects/System/lfortran$ lfortran ./examples/example.f90
Fatal glibc error: malloc.c:2599 (sysmalloc): assertion failed: (old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)
Aborted (core dumped)
kmr-srbh

kmr-srbh commented on Sep 3, 2024

@kmr-srbh
Author
kmr-srbh

kmr-srbh commented on Sep 3, 2024

@kmr-srbh
MemberAuthor

nbody.f90

MRE

program nbody
    implicit none

    type body
        real :: mass
    end type body

    type(body), parameter :: jupiter = body(9.5)
    real, parameter :: mass(1) = [jupiter%mass]
end program nbody

Output

(base) saurabh-kumar@Awadh:~/Projects/System/lfortran$ lfortran ./examples/example.f90
Internal Compiler Error: Unhandled exception
Traceback (most recent call last):
  Binary file "/home/saurabh-kumar/Projects/System/lfortran/src/bin/lfortran", in _start()
  File "./csu/../csu/libc-start.c", line 360, in __libc_start_main_impl()
  File "./csu/../sysdeps/x86/libc-start.c", line 58, in __libc_start_call_main()
  File "/home/saurabh-kumar/Projects/System/lfortran/src/bin/lfortran.cpp", line 2612, in main()
    return main_app(argc, argv);
  File "/home/saurabh-kumar/Projects/System/lfortran/src/bin/lfortran.cpp", line 2553, in main_app(int, char**)
    err = compile_src_to_object_file(arg_file, tmp_o, false,
  File "/home/saurabh-kumar/Projects/System/lfortran/src/bin/lfortran.cpp", line 1029, in compile_src_to_object_file()
    res = fe.get_llvm3(*asr, lpm, diagnostics, infile);
  File "/home/saurabh-kumar/Projects/System/lfortran/src/lfortran/fortran_evaluator.cpp", line 366, 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&)
    compiler_options, run_fn, infile);
  File "/home/saurabh-kumar/Projects/System/lfortran/src/libasr/codegen/asr_to_llvm.cpp", line 10193, 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&)
    v.visit_asr((ASR::asr_t&)asr);
  File "/home/saurabh-kumar/Projects/System/lfortran/src/libasr/../libasr/asr.h", line 5134, 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/saurabh-kumar/Projects/System/lfortran/src/libasr/../libasr/asr.h", line 5110, in visit_asr_t<LCompilers::ASRToLLVMVisitor>()
    case asrType::unit: { v.visit_unit((const unit_t &)x); return; }
  File "/home/saurabh-kumar/Projects/System/lfortran/src/libasr/../libasr/asr.h", line 5135, 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/saurabh-kumar/Projects/System/lfortran/src/libasr/../libasr/asr.h", line 4842, in visit_unit_t<LCompilers::ASRToLLVMVisitor>()
    case unitType::TranslationUnit: { v.visit_TranslationUnit((const TranslationUnit_t &)x); return; }
  File "/home/saurabh-kumar/Projects/System/lfortran/src/libasr/codegen/asr_to_llvm.cpp", line 998, in LCompilers::ASRToLLVMVisitor::visit_TranslationUnit(LCompilers::ASR::TranslationUnit_t const&)
    visit_symbol(*item.second);
  File "/home/saurabh-kumar/Projects/System/lfortran/src/libasr/../libasr/asr.h", line 5137, 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/saurabh-kumar/Projects/System/lfortran/src/libasr/../libasr/asr.h", line 4850, in visit_symbol_t<LCompilers::ASRToLLVMVisitor>()
    case symbolType::Program: { v.visit_Program((const Program_t &)x); return; }
  File "/home/saurabh-kumar/Projects/System/lfortran/src/libasr/codegen/asr_to_llvm.cpp", line 3238, in LCompilers::ASRToLLVMVisitor::visit_Program(LCompilers::ASR::Program_t const&)
    declare_vars(x);
  File "/home/saurabh-kumar/Projects/System/lfortran/src/libasr/codegen/asr_to_llvm.cpp", line 3824, in void LCompilers::ASRToLLVMVisitor::declare_vars<LCompilers::ASR::Program_t>(LCompilers::ASR::Program_t const&, bool)
    process_Variable(var_sym, x, debug_arg_count);
  File "/home/saurabh-kumar/Projects/System/lfortran/src/libasr/codegen/asr_to_llvm.cpp", line 3708, in void LCompilers::ASRToLLVMVisitor::process_Variable<LCompilers::ASR::Program_t const>(LCompilers::ASR::symbol_t*, LCompilers::ASR::Program_t const&, unsigned int&)
    this->visit_expr_wrapper(v->m_symbolic_value, true);
  File "/home/saurabh-kumar/Projects/System/lfortran/src/libasr/codegen/asr_to_llvm.cpp", line 5432, in LCompilers::ASRToLLVMVisitor::visit_expr_wrapper(LCompilers::ASR::expr_t*, bool)
    this->visit_expr(*x);
  File "/home/saurabh-kumar/Projects/System/lfortran/src/libasr/../libasr/asr.h", line 5202, in LCompilers::ASR::BaseVisitor<LCompilers::ASRToLLVMVisitor>::visit_expr(LCompilers::ASR::expr_t const&)
    void visit_expr(const expr_t &b) { visit_expr_t(b, self()); }
  File "/home/saurabh-kumar/Projects/System/lfortran/src/libasr/../libasr/asr.h", line 4935, in visit_expr_t<LCompilers::ASRToLLVMVisitor>()
    case exprType::StructConstructor: { v.visit_StructConstructor((const StructConstructor_t &)x); return; }
LCompilersException: visit_StructConstructor() not implemented
kmr-srbh

kmr-srbh commented on Sep 3, 2024

@kmr-srbh
MemberAuthor

parameter_13.f90

MRE

program parameter_13
   implicit none
   integer :: i
   integer, parameter :: N = 65535
   real, parameter :: a = 0, b = 2*asin(real(1))
   real, parameter :: X(*) = [(sin(a+(b-a)*i/N), i = 1, N)]
end program

Output

(base) saurabh-kumar@Awadh:~/Projects/System/lfortran$ lfortran ./examples/example.f90
^C

More info

The test takes a lot of time to compile due to the large size of N, decreasing the size helps compile it in lesser time. I think this time increase is due to the temporaries we create for compiling this test.

kmr-srbh

kmr-srbh commented on Sep 3, 2024

@kmr-srbh
MemberAuthor

implied_do_loops3.f90

MRE

program implied_do_loop3

   integer::i,j,k

   print *,"Loop 1"
   print*, (i,(i+j,(i+j+k,k=1,4),j=1,2),i=1,3)
   print *,"Loop 2"
   print*, (i,(i*j,((i*j)+k,k=1,4),j=1,2),i=1,3)

end program

Output

(base) saurabh-kumar@Awadh:~/Projects/System/lfortran$ lfortran ./examples/example.f90
Loop 1
123456345672345674567834
Loop 2
112345234562234564567833
munmap_chunk(): invalid pointer
Aborted (core dumped)
kmr-srbh

kmr-srbh commented on Sep 4, 2024

@kmr-srbh
Author

19 remaining items

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    simplifier passPull Requests related to the simplifier pass.tracking issuetracking issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      MREs for failing integration tests in `simplifier` pass · Issue #4738 · lfortran/lfortran