Command:
target/debug/circom --llzk -- circom/tests/misc/poseidon.circom
Error (stack trace below):
Failed to generate LLZK IR: variable 'nInputs' not found
In this case, the variable not found is a template input. However, this affects many circom benchmarks as well and in some of those, the variable that's not found in an input signal. One such example from the circom benchmarks repo is libs/circomlib/circuits/sha256/main.circom.
Stack trace from the poseidon test with --verbose flag:
Stack backtrace:
0: std::backtrace_rs::backtrace::libunwind::trace
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
1: std::backtrace_rs::backtrace::trace_unsynchronized
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
2: std::backtrace::Backtrace::create
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/backtrace.rs:331:13
3: anyhow::error::<impl anyhow::Error>::msg
at /Users/tim/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/backtrace.rs:27:14
4: anyhow::__private::format_err
at /Users/tim/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/lib.rs:698:13
5: llzk_backend::gen_context::BlockContextStack::get_named_value::{{closure}}
at ./llzk_backend/src/gen_context.rs:430:28
6: core::option::Option<T>::ok_or_else
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/option.rs:1369:25
7: llzk_backend::gen_context::BlockContextStack::get_named_value
at ./llzk_backend/src/gen_context.rs:430:14
8: llzk_backend::lvalue::Lvalue::get_root_value
at ./llzk_backend/src/lvalue.rs:134:29
9: llzk_backend::lvalue::Lvalue::get_value
at ./llzk_backend/src/lvalue.rs:397:26
10: <program_structure::abstract_syntax_tree::ast::Expression as llzk_backend::gen_context::GenerateLLZKInAnyBlock>::gen_llzk_in_block
at ./llzk_backend/src/gen_context.rs:2616:24
11: <program_structure::abstract_syntax_tree::ast::Expression as llzk_backend::gen_context::GenerateLLZKInAnyBlock>::gen_llzk_in_block
at ./llzk_backend/src/gen_context.rs:2626:31
12: llzk_backend::gen_context::BlockGenContext::handle_substitution_stmt_nonsignal
at ./llzk_backend/src/gen_context.rs:1248:26
13: llzk_backend::shared::DimExprConverter::gen_template_poly_expr::gen_stmt_fully
at ./llzk_backend/src/shared.rs:2076:33
14: llzk_backend::shared::DimExprConverter::gen_template_poly_expr::gen_stmt_fully
at ./llzk_backend/src/shared.rs:2043:25
15: llzk_backend::shared::DimExprConverter::gen_template_poly_expr::gen_up_to_target
at ./llzk_backend/src/shared.rs:2269:17
16: llzk_backend::shared::DimExprConverter::gen_template_poly_expr
at ./llzk_backend/src/shared.rs:2325:13
17: <llzk_backend::gen_context::BlockGenContext as llzk_backend::shared::DimExprConverter>::get_dim_expr
at ./llzk_backend/src/gen_context.rs:2515:30
18: <program_structure::abstract_syntax_tree::ast::Expression as llzk_backend::gen_context::GenerateLLZKInAnyBlock>::gen_llzk_in_block
at ./llzk_backend/src/gen_context.rs:2700:22
19: llzk_backend::gen_context::BlockGenContext::handle_substitution_stmt_nonsignal
at ./llzk_backend/src/gen_context.rs:1248:26
20: llzk_backend::shared::DimExprConverter::gen_template_poly_expr::gen_stmt_fully
at ./llzk_backend/src/shared.rs:2076:33
21: llzk_backend::shared::DimExprConverter::gen_template_poly_expr::gen_stmt_fully
at ./llzk_backend/src/shared.rs:2043:25
22: llzk_backend::shared::DimExprConverter::gen_template_poly_expr::gen_up_to_target
at ./llzk_backend/src/shared.rs:2269:17
23: llzk_backend::shared::DimExprConverter::gen_template_poly_expr
at ./llzk_backend/src/shared.rs:2325:13
24: <llzk_backend::module::DeclarationInfo as llzk_backend::shared::DimExprConverter>::get_dim_expr
at ./llzk_backend/src/module.rs:550:51
25: llzk_backend::shared::DimExprConverter::get_dim_exprs_if_able::{{closure}}
at ./llzk_backend/src/shared.rs:1957:27
26: core::iter::adapters::map::map_try_fold::{{closure}}
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/adapters/map.rs:95:28
27: core::iter::traits::iterator::Iterator::try_fold
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/traits/iterator.rs:2434:21
28: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::try_fold
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/adapters/map.rs:121:19
29: <core::iter::adapters::GenericShunt<I,R> as core::iter::traits::iterator::Iterator>::try_fold
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/adapters/mod.rs:192:14
30: core::iter::traits::iterator::Iterator::try_for_each
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/traits/iterator.rs:2495:14
31: <core::iter::adapters::GenericShunt<I,R> as core::iter::traits::iterator::Iterator>::next
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/adapters/mod.rs:174:14
32: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/vec/spec_from_iter_nested.rs:24:41
33: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/vec/spec_from_iter.rs:33:9
34: <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/vec/mod.rs:3801:9
35: core::iter::traits::iterator::Iterator::collect
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/traits/iterator.rs:2035:9
36: <core::result::Result<V,E> as core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter::{{closure}}
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/result.rs:2156:51
37: core::iter::adapters::try_process
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/adapters/mod.rs:160:17
38: <core::result::Result<V,E> as core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/result.rs:2156:9
39: core::iter::traits::iterator::Iterator::collect
at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/iter/traits/iterator.rs:2035:9
40: llzk_backend::shared::DimExprConverter::get_dim_exprs_if_able
at ./llzk_backend/src/shared.rs:1958:14
41: llzk_backend::shared::DimExprConverter::get_dim_exprs
at ./llzk_backend/src/shared.rs:1970:14
42: llzk_backend::module::DeclarationInfo::visit
at ./llzk_backend/src/module.rs:320:47
43: llzk_backend::module::DeclarationInfo::visit
at ./llzk_backend/src/module.rs:282:26
44: llzk_backend::module::DeclarationInfo::from_template
at ./llzk_backend/src/module.rs:241:26
45: <program_structure::program_library::template_data::TemplateData as llzk_backend::template_ext::TemplateLike>::get_declarations
at ./llzk_backend/src/template_ext.rs:159:9
46: <P as llzk_backend::module::GenerateLLZKInModule<P>>::gen_llzk
at ./llzk_backend/src/module.rs:845:55
47: llzk_backend::codegen::generate_llzk
at ./llzk_backend/src/codegen.rs:120:13
Command:
target/debug/circom --llzk -- circom/tests/misc/poseidon.circomError (stack trace below):
Failed to generate LLZK IR: variable 'nInputs' not foundIn this case, the variable not found is a template input. However, this affects many circom benchmarks as well and in some of those, the variable that's not found in an input signal. One such example from the circom benchmarks repo is
libs/circomlib/circuits/sha256/main.circom.Stack trace from the
poseidontest with--verboseflag: