Skip to content

PASS: pass_array_by_data() fails when a subarray is passed #1721

Open
@ubaidsk

Description

@ubaidsk

Example:

(lp) lpython$ cat examples/expr2.py 
from lpython import i32
from numpy import empty

def f(a: i32[:]):
    print(a)

def main0():
    A: i32[5, 10] = empty([5, 10])
    f(A[0])

main0()
(lp) lpython$ python examples/expr2.py
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
(lp) lpython$ lpython examples/expr2.py
Internal Compiler Error: Unhandled exception
Traceback (most recent call last):
  File "/Users/ubaid/Desktop/OpenSource/lpython/src/bin/lpython.cpp", line 1774
    err = compile_python_to_object_file(arg_file, tmp_o, runtime_library_dir,
  File "/Users/ubaid/Desktop/OpenSource/lpython/src/bin/lpython.cpp", line 771
    res = fe.get_llvm3(*asr, pass_manager, diagnostics, infile);
  File "/Users/ubaid/Desktop/OpenSource/lpython/src/lpython/python_evaluator.cpp", line 58
    run_fn, infile);
  File "/Users/ubaid/Desktop/OpenSource/lpython/src/libasr/codegen/asr_to_llvm.cpp", line 7843
    pass_manager.apply_passes(al, &asr, pass_options, diagnostics);
  File "/Users/ubaid/Desktop/OpenSource/lpython/src/libasr/pass/pass_manager.h", line 272
    _apply_passes(al, asr, _passes, pass_options, diagnostics);
  File "/Users/ubaid/Desktop/OpenSource/lpython/src/libasr/pass/pass_manager.h", line 144
    _passes_db[passes[i]](al, *asr, pass_options);
  File "/Users/ubaid/Desktop/OpenSource/lpython/src/libasr/pass/pass_array_by_data.cpp", line 560
    u.visit_TranslationUnit(unit);
  File "../libasr/asr.h", line 35943
  File "../libasr/asr.h", line 4567
  File "../libasr/asr.h", line 4303
  File "../libasr/asr.h", line 35961
  File "../libasr/asr.h", line 4567
  File "../libasr/asr.h", line 4304
  File "../libasr/asr.h", line 35977
  File "../libasr/asr.h", line 35937
  File "../libasr/asr.h", line 4582
  File "../libasr/asr.h", line 4351
  File "/Users/ubaid/Desktop/OpenSource/lpython/src/libasr/pass/pass_array_by_data.cpp", line 481
    visit_Call(x);
  File "/Users/ubaid/Desktop/OpenSource/lpython/src/libasr/pass/pass_array_by_data.cpp", line 448
    throw LCompilersException("Number of arguments in the new "
LCompilersException: Number of arguments in the new function call doesn't satisfy min_args <= new_args.size() <= max_args, 3 <= 1 <= 3

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions