Skip to content

feat: SSA interpreter checks return value#8883

Merged
asterite merged 1 commit intomasterfrom
ab/ssa-interpreter-check-return
Jun 11, 2025
Merged

feat: SSA interpreter checks return value#8883
asterite merged 1 commit intomasterfrom
ab/ssa-interpreter-check-return

Conversation

@asterite
Copy link
Collaborator

Description

Problem

No issue, but I think @aakoshh mentioned this as a potential improvements.

This will also be useful to run nargo interpret on all execution_success test programs, combined with #8882.

Summary

For example, given this program:

fn main() -> pub Field {
    0
}

and this Prover.toml:

return = 1

running nargo interpret we get this output:

--- Interpreter result after Initial SSA:
Ok([Numeric(Field(0))])
---
Error: interpreter produced an unexpected result.
Expected result: [Numeric(Field(1))]
Actual result:   [Numeric(Field(0))]

Additional Context

Documentation

Check one:

  • No documentation needed.
  • Documentation included in this PR.
  • [For Experimental Features] Documentation to be submitted in a separate PR.

PR Checklist

  • I have tested the changes locally.
  • I have formatted the changes with Prettier and/or cargo fmt on default settings.

@asterite asterite requested a review from a team June 11, 2025 15:27
Copy link
Contributor

@aakoshh aakoshh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great! Not sure if it has to be a shortcutting issue, but I suppose if we know it's wrong it's unlikely to get back on track in subsequent passes.

@aakoshh
Copy link
Contributor

aakoshh commented Jun 11, 2025

Although actually one of the bugs you fixed did correct itself, so we would have to carry the “any disagreed” flag to the end.

Never mind though, I’m happy either way.

@asterite
Copy link
Collaborator Author

I think that even if the return value changes in an intermediate pass and then changes again later on to the correct value, it might mean there's a bug in the interpreter so maybe the value fixing itself is just a coincidence.

@asterite asterite added this pull request to the merge queue Jun 11, 2025
Merged via the queue into master with commit 12bf0db Jun 11, 2025
117 checks passed
@asterite asterite deleted the ab/ssa-interpreter-check-return branch June 11, 2025 16:05
github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Jun 12, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore: interpret all execution_success programs
(noir-lang/noir#8887)
fix: always error if integer literal doesn't fit its type on the fron…
(noir-lang/noir#8885)
fix: Count array copies for slice functions
(noir-lang/noir#8867)
chore(ssa): Simplify truncate when the bit size we are truncating to is
greater than the value's max bit size
(noir-lang/noir#8875)
fix(ssa): Validate field to integer cast
(noir-lang/noir#8799)
feat: SSA interpreter checks return value
(noir-lang/noir#8883)
chore: add return value to every execution_success program that produces
an output (noir-lang/noir#8882)
chore(fuzz): Run fuzzing deterministically on CI
(noir-lang/noir#8868)
fix: (SSA interpreter) check requires_acir_gen_predicate for
enable_side_effects (noir-lang/noir#8869)
feat: allow printing each SSA interpreter definition
(noir-lang/noir#8865)
fix: handle unconditional break during SSA codegen in all cases
(noir-lang/noir#8855)
fix: update external lib commit tdd.nr
(noir-lang/noir#8823)
chore: bump dependencies (noir-lang/noir#8838)
chore(fuzz): Enable SSA Interpreter fuzzing on all passes
(noir-lang/noir#8610)
chore: Prune changelog older than ~1 year (<0.32.0)
(noir-lang/noir#8856)
chore(docs): Add links to awesome-noir in sidebar
(noir-lang/noir#8854)
chore: add a regression test for #8727
(noir-lang/noir#8851)
chore(fuzz): Handle overflows in comptime fuzzing
(noir-lang/noir#8847)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Jun 12, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore: interpret all execution_success programs
(noir-lang/noir#8887)
fix: always error if integer literal doesn't fit its type on the fron…
(noir-lang/noir#8885)
fix: Count array copies for slice functions
(noir-lang/noir#8867)
chore(ssa): Simplify truncate when the bit size we are truncating to is
greater than the value's max bit size
(noir-lang/noir#8875)
fix(ssa): Validate field to integer cast
(noir-lang/noir#8799)
feat: SSA interpreter checks return value
(noir-lang/noir#8883)
chore: add return value to every execution_success program that produces
an output (noir-lang/noir#8882)
chore(fuzz): Run fuzzing deterministically on CI
(noir-lang/noir#8868)
fix: (SSA interpreter) check requires_acir_gen_predicate for
enable_side_effects (noir-lang/noir#8869)
feat: allow printing each SSA interpreter definition
(noir-lang/noir#8865)
fix: handle unconditional break during SSA codegen in all cases
(noir-lang/noir#8855)
fix: update external lib commit tdd.nr
(noir-lang/noir#8823)
chore: bump dependencies (noir-lang/noir#8838)
chore(fuzz): Enable SSA Interpreter fuzzing on all passes
(noir-lang/noir#8610)
chore: Prune changelog older than ~1 year (<0.32.0)
(noir-lang/noir#8856)
chore(docs): Add links to awesome-noir in sidebar
(noir-lang/noir#8854)
chore: add a regression test for #8727
(noir-lang/noir#8851)
chore(fuzz): Handle overflows in comptime fuzzing
(noir-lang/noir#8847)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
danielntmd pushed a commit to danielntmd/aztec-packages that referenced this pull request Jul 16, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore: interpret all execution_success programs
(noir-lang/noir#8887)
fix: always error if integer literal doesn't fit its type on the fron…
(noir-lang/noir#8885)
fix: Count array copies for slice functions
(noir-lang/noir#8867)
chore(ssa): Simplify truncate when the bit size we are truncating to is
greater than the value's max bit size
(noir-lang/noir#8875)
fix(ssa): Validate field to integer cast
(noir-lang/noir#8799)
feat: SSA interpreter checks return value
(noir-lang/noir#8883)
chore: add return value to every execution_success program that produces
an output (noir-lang/noir#8882)
chore(fuzz): Run fuzzing deterministically on CI
(noir-lang/noir#8868)
fix: (SSA interpreter) check requires_acir_gen_predicate for
enable_side_effects (noir-lang/noir#8869)
feat: allow printing each SSA interpreter definition
(noir-lang/noir#8865)
fix: handle unconditional break during SSA codegen in all cases
(noir-lang/noir#8855)
fix: update external lib commit tdd.nr
(noir-lang/noir#8823)
chore: bump dependencies (noir-lang/noir#8838)
chore(fuzz): Enable SSA Interpreter fuzzing on all passes
(noir-lang/noir#8610)
chore: Prune changelog older than ~1 year (<0.32.0)
(noir-lang/noir#8856)
chore(docs): Add links to awesome-noir in sidebar
(noir-lang/noir#8854)
chore: add a regression test for AztecProtocol#8727
(noir-lang/noir#8851)
chore(fuzz): Handle overflows in comptime fuzzing
(noir-lang/noir#8847)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants