-
Notifications
You must be signed in to change notification settings - Fork 242
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
fix(ssa): Make the lookback feature opt-in #7190
base: master
Are you sure you want to change the base?
Conversation
Even prior to the addition of this feature, this pass was causing compilation to hang on the protocol circuits so I'm in favour of making the entire pass opt in. |
Alright. Gotta put some additional research into this, as in doing test runs working on the initial check protocol circuits worked fine for me (although I've had word of the hangups later). Removed "resolves #7171" from the description. I think the feature should be opt-in any case though. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Test Suite Duration'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20
.
Benchmark suite | Current: dfec078 | Previous: 130d991 | Ratio |
---|---|---|---|
noir-lang_noir_check_shuffle_ |
1 s |
0 s |
+∞ |
noir-lang_ec_ |
1 s |
0 s |
+∞ |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
Added filtering for already visited code locations of the brillig calls, which seems to help a lot with huge unrolled functions. Probably could switch the check back as the default. |
Description
Problem
The Brillig constraints check can get slow on large rollout functions, with the recently added lookback feature, while allowing to catch some rare false positives, looking to be the main culprit.
Summary
This PR disables lookback by default and allows the developer to employ it at their discretion. Also, repeated code locations of brillig calls are filtered out, improving performance of the pass.
Additional Context
Documentation*
Check one:
PR Checklist*
cargo fmt
on default settings.