-
Notifications
You must be signed in to change notification settings - Fork 200
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
chore(ssa refactor): Implement function inlining #1293
Conversation
Open questions:
|
Probably out of scope for this PR, but if tested in conjunction with constant folding and DCE, we could:
E.g. check that
Reduces to
I guess we'd also need other simplification passes if were we to test a program containing functions that compromise of more than a single block. |
* phated/acvm-0.12.0: (45 commits) chore!: Update to ACVM 0.12.0 official release of backend feat: use dummy constructor for bb call chore: add missing `?` chore: use `try_vecmap` in old `vecmap` locations chore: update `acvm-backend-barretenberg` to 0.1.0 commit latest master fix: improve variable resolution test: re enabled sort test chore: update cargo tomls feat: adapted to heterogeneous bb calls remove unneeded import fix grep problems chore: replace long `Backend` type parameters with `B` update to latest commit chore: Make CliError generic over a Backend chore: Update nargo core to return backend errors chore!: Update to acvm 0.11.0 chore(parser): Parser error optimisation (#1292) chore(ssa refactor): Implement function inlining (#1293) ...
* master: (66 commits) feat(nargo)!: retire print-acir in favour of flag (#1328) chore(ssa): enable cse for assert (#1350) chore(ssa refactor): Add basic instruction simplification (#1329) chore(noir): Release 0.6.0 (#1279) feat: enable to_radix for any field element (#1343) chore(ssa refactor): Simplify inlining pass and fix inlining failure (#1337) chore!: Update to acvm 0.11.0 (#1322) feat: Add ECDSA secp256k1 builtin test (#1294) chore: add support for encoding/decoding inputs from JSON (#1325) feat: Issue an error when attempting to use a `return` expression (#1330) chore(ssa refactor): Fix inlining bug (#1335) fix: to-bits and to-radix for > 128 bits (#1312) chore(parser): Parser error optimisation (#1292) chore(ssa refactor): Implement function inlining (#1293) chore: fix installation link in readme (#1326) chore: fix installation link in readme (#1326) feat(stdlib): Add keccak (#1249) fix: Parsing nested generics (#1319) chore(ssa refactor): Document some SSA-gen functions (#1321) fix: Assigning to tuple fields (#1318) ...
Related issue(s)
Resolves #
Description
Summary of changes
Implements function inlining for the ssa refactoring. This pass will attempt to inline all functions into (a copy of) main. If it fails to inline all functions because a function in a function call is still unknown, it will keep each function in the
Ssa
struct and set the new main function to the partially-inlined version. If all functions are successfully inlined, the fully-inlined main function is the new main function and all other functions are removed.Dependency additions / changes
Test additions / changes
Checklist
cargo fmt
with default settings.Documentation needs
Additional context