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

feat: Variable liveness analysis for brillig #2715

Merged
merged 14 commits into from
Sep 19, 2023

Conversation

sirasistant
Copy link
Contributor

@sirasistant sirasistant commented Sep 15, 2023

Description

  • Analyzes brillig functions for variable liveness
  • Uses that information to reuse registers during the function execution
  • Also uses that information for dumping & restoring only in-use registers for function calls

Problem*

Resolves #1720

Summary*

Documentation

  • This PR requires documentation updates when merged.

    • I will submit a noir-lang/docs PR.
    • I will request for and support Dev Rel's help in documenting this PR.

Additional Context

PR Checklist*

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

@sirasistant sirasistant marked this pull request as ready for review September 15, 2023 15:30
@kevaundray kevaundray added this pull request to the merge queue Sep 19, 2023
Merged via the queue into master with commit ddb05ab Sep 19, 2023
15 checks passed
@kevaundray kevaundray deleted the arv/brillig_register_liveness branch September 19, 2023 14:20
TomAFrench added a commit that referenced this pull request Sep 20, 2023
* master:
  feat(traits): Type checking for Trait impl method signatures  (#2652)
  chore: split 9_conditional test case and remove 8_integration (#2751)
  chore(github): Add "Idea Action Plan" Issue template (#2736)
  feat(aztec-noir): abstract storage (#2750)
  feat: signed arithmetic (#2748)
  chore: encapsulate abstraction leaks from `bb` into new crate (#2747)
  feat: Variable liveness analysis for brillig (#2715)
  chore: noirjs integration testing (#2744)
  chore: Add rust-toolchain file & adapt nix for changes (#2686)
  chore: wrap backend info response in a struct instead of boxed closure (#2737)
  fix: check for literal overflows in expressions (#2742)
  fix: nightly js test (#2740)
  fix: keep the correct type for bitshift (#2739)
  chore: Make new daily nightly releases be pre-releases and non latest (#2735)
  chore: disabling display location section  (#2118)
  chore: add a workflow that tracks acvm version for integration tests (#2700)
  feat: Save nightly build in github releases with date tags (#2416)
  chore: Add unified linting setup for JS code and enforce in CI (#2728)
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.

brillig: Use register liveness to deallocate registers
2 participants