Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closure Conversion dependent type rewrites #168

Open
NeuralCoder3 opened this issue Jan 9, 2023 · 1 comment
Open

Closure Conversion dependent type rewrites #168

NeuralCoder3 opened this issue Jan 9, 2023 · 1 comment
Labels
enhancement New feature or request

Comments

@NeuralCoder3
Copy link
Collaborator

NeuralCoder3 commented Jan 9, 2023

Fork: neuralcoder3/throin2
Branch: matrix_dialect
Command: ./build/bin/thorin -d matrix lit/matrix/print_const.thorin -d affine -d direct -d clos -o - -VVVV

The type of .con print_int_matrix [mem: %mem.M, k: .Nat, l: .Nat, m: %matrix.Mat (2, (k,l), I32), return : .Cn [%mem.M]];
is rewritten to cc_print_int_matrix_3068959 : [%mem.M, [], .Nat, .Nat, %mem.Ptr («k_3068787; «l_3068793; .Idx 4294967296»», 0), .Cn %mem.M].

The dependency is lost resulting in error: cannot pass argument.

Note: Intermediate solution: Ignore dependencies in the type scheme by writing a wrapper that replaces (k,l) with (⊤:.Nat,⊤:.Nat) using bitcasts.

@NeuralCoder3 NeuralCoder3 added the bug Something isn't working label Jan 9, 2023
@leissa
Copy link
Member

leissa commented Jan 9, 2023

This is a known limitation. See also Typed Closure Conversion for the Calculus of Constructions.

Relabeling as enhancement.

@leissa leissa added enhancement New feature or request and removed bug Something isn't working labels Jan 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants