feat: attempt to inline successors in simplify_cfg#9608
Conversation
There was a problem hiding this comment.
ACVM Benchmarks
Details
| Benchmark suite | Current: 9c98367 | Previous: d293d1c | Ratio |
|---|---|---|---|
purely_sequential_opcodes |
251724 ns/iter (± 719) |
261951 ns/iter (± 1813) |
0.96 |
perfectly_parallel_opcodes |
223173 ns/iter (± 1055) |
229459 ns/iter (± 864) |
0.97 |
perfectly_parallel_batch_inversion_opcodes |
2257695 ns/iter (± 4814) |
2786517 ns/iter (± 5446) |
0.81 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Artifact Size
Details
| Benchmark suite | Current: 9c98367 | Previous: d293d1c | Ratio |
|---|---|---|---|
private-kernel-inner |
714.3 KB |
714.3 KB |
1 |
private-kernel-reset |
1864.5 KB |
1864.5 KB |
1 |
private-kernel-tail |
546.2 KB |
546.2 KB |
1 |
rollup-block-root-first-empty-tx |
179.8 KB |
179.8 KB |
1 |
rollup-block-root-single-tx |
178.1 KB |
178.1 KB |
1 |
rollup-block-root |
258.1 KB |
258.1 KB |
1 |
rollup-checkpoint-merge |
370.6 KB |
370.6 KB |
1 |
rollup-checkpoint-root-single-block |
27640.9 KB |
27640.9 KB |
1 |
rollup-checkpoint-root |
27686.8 KB |
27686.8 KB |
1 |
rollup-root |
411.4 KB |
411.4 KB |
1 |
rollup-tx-base-private |
4906.9 KB |
4906.9 KB |
1 |
rollup-tx-base-public |
4555.1 KB |
4555.1 KB |
1 |
rollup-tx-merge |
186.1 KB |
186.1 KB |
1 |
semaphore-depth-10 |
570.7 KB |
570.7 KB |
1 |
sha512-100-bytes |
506.3 KB |
506.3 KB |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Execution Time
Details
| Benchmark suite | Current: 9c98367 | Previous: d293d1c | Ratio |
|---|---|---|---|
private-kernel-inner |
0.012 s |
0.012 s |
1 |
private-kernel-reset |
0.152 s |
0.153 s |
0.99 |
private-kernel-tail |
0.01 s |
0.01 s |
1 |
rollup-block-root-first-empty-tx |
0.003 s |
0.003 s |
1 |
rollup-block-root-single-tx |
0.003 s |
0.003 s |
1 |
rollup-block-root |
0.004 s |
0.004 s |
1 |
rollup-checkpoint-merge |
0.003 s |
0.003 s |
1 |
rollup-checkpoint-root-single-block |
12.4 s |
12.5 s |
0.99 |
rollup-checkpoint-root |
12.8 s |
12.9 s |
0.99 |
rollup-root |
0.005 s |
0.004 s |
1.25 |
rollup-tx-base-private |
0.3 s |
0.306 s |
0.98 |
rollup-tx-base-public |
0.245 s |
0.238 s |
1.03 |
rollup-tx-merge |
0.002 s |
0.003 s |
0.67 |
semaphore-depth-10 |
0.009 s |
0.009 s |
1 |
sha512-100-bytes |
0.077 s |
0.064 s |
1.20 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Opcode count
Details
| Benchmark suite | Current: 9c98367 | Previous: d293d1c | Ratio |
|---|---|---|---|
private-kernel-inner |
14544 opcodes |
14544 opcodes |
1 |
private-kernel-reset |
70418 opcodes |
70418 opcodes |
1 |
private-kernel-tail |
11680 opcodes |
11680 opcodes |
1 |
rollup-block-root-first-empty-tx |
1365 opcodes |
1365 opcodes |
1 |
rollup-block-root-single-tx |
1049 opcodes |
1049 opcodes |
1 |
rollup-block-root |
2410 opcodes |
2410 opcodes |
1 |
rollup-checkpoint-merge |
2130 opcodes |
2130 opcodes |
1 |
rollup-checkpoint-root-single-block |
962022 opcodes |
962022 opcodes |
1 |
rollup-checkpoint-root |
963382 opcodes |
963382 opcodes |
1 |
rollup-root |
2630 opcodes |
2630 opcodes |
1 |
rollup-tx-base-private |
263910 opcodes |
263910 opcodes |
1 |
rollup-tx-base-public |
245187 opcodes |
245187 opcodes |
1 |
rollup-tx-merge |
1486 opcodes |
1486 opcodes |
1 |
semaphore-depth-10 |
5700 opcodes |
5700 opcodes |
1 |
sha512-100-bytes |
13173 opcodes |
13173 opcodes |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Compilation Time
Details
| Benchmark suite | Current: 9c98367 | Previous: d293d1c | Ratio |
|---|---|---|---|
private-kernel-inner |
1.96 s |
1.748 s |
1.12 |
private-kernel-reset |
6.974 s |
6.62 s |
1.05 |
private-kernel-tail |
1.454 s |
1.342 s |
1.08 |
rollup-block-root-first-empty-tx |
1.364 s |
1.376 s |
0.99 |
rollup-block-root-single-tx |
1.52 s |
1.35 s |
1.13 |
rollup-block-root |
1.44 s |
1.45 s |
0.99 |
rollup-checkpoint-merge |
1.448 s |
1.556 s |
0.93 |
rollup-checkpoint-root-single-block |
209 s |
205 s |
1.02 |
rollup-checkpoint-root |
232 s |
203 s |
1.14 |
rollup-root |
1.748 s |
1.472 s |
1.19 |
rollup-tx-base-private |
17.58 s |
18.9 s |
0.93 |
rollup-tx-base-public |
137.4 s |
133.4 s |
1.03 |
rollup-tx-merge |
1.356 s |
1.426 s |
0.95 |
semaphore-depth-10 |
0.771 s |
0.782 s |
0.99 |
sha512-100-bytes |
1.727 s |
1.554 s |
1.11 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Test Suite Duration
Details
| Benchmark suite | Current: 9c98367 | Previous: d293d1c | Ratio |
|---|---|---|---|
test_report_AztecProtocol_aztec-packages_noir-projects_aztec-nr |
117 s |
121 s |
0.97 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-contracts |
126 s |
132 s |
0.95 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_blob |
268 s |
248 s |
1.08 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_private-kernel-lib |
243 s |
229 s |
1.06 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_types |
155 s |
157 s |
0.99 |
test_report_noir-lang_noir-bignum_ |
157 s |
168 s |
0.93 |
test_report_noir-lang_noir_bigcurve_ |
351 s |
387 s |
0.91 |
test_report_noir-lang_sha256_ |
16 s |
16 s |
1 |
test_report_noir-lang_sha512_ |
14 s |
15 s |
0.93 |
test_report_zkpassport_noir-ecdsa_ |
3 s |
2 s |
1.50 |
test_report_zkpassport_noir_rsa_ |
1 s |
2 s |
0.50 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
⚠️ 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: 9c98367 | Previous: d293d1c | Ratio |
|---|---|---|---|
test_report_zkpassport_noir-ecdsa_ |
3 s |
2 s |
1.50 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
There was a problem hiding this comment.
Compilation Memory
Details
| Benchmark suite | Current: 9c98367 | Previous: d293d1c | Ratio |
|---|---|---|---|
private-kernel-inner |
265.5 MB |
265.5 MB |
1 |
private-kernel-reset |
493.18 MB |
493.18 MB |
1 |
private-kernel-tail |
247.54 MB |
247.54 MB |
1 |
rollup-block-root-first-empty-tx |
339.97 MB |
339.97 MB |
1 |
rollup-block-root-single-tx |
337.4 MB |
337.41 MB |
1.00 |
rollup-block-root |
340.44 MB |
340.44 MB |
1 |
rollup-checkpoint-merge |
339.76 MB |
339.76 MB |
1 |
rollup-checkpoint-root-single-block |
6810 MB |
6810 MB |
1 |
rollup-checkpoint-root |
6810 MB |
6810 MB |
1 |
rollup-root |
344.07 MB |
344.07 MB |
1 |
rollup-tx-base-private |
1050 MB |
1050 MB |
1 |
rollup-tx-base-public |
2890 MB |
2890 MB |
1 |
rollup-tx-merge |
337.64 MB |
337.64 MB |
1 |
semaphore_depth_10 |
92.18 MB |
92.18 MB |
1 |
sha512_100_bytes |
185.5 MB |
185.46 MB |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Execution Memory
Details
| Benchmark suite | Current: 9c98367 | Previous: d293d1c | Ratio |
|---|---|---|---|
private-kernel-inner |
253.63 MB |
253.63 MB |
1 |
private-kernel-reset |
287.24 MB |
287.24 MB |
1 |
private-kernel-tail |
243.5 MB |
243.5 MB |
1 |
rollup-block-root |
337.87 MB |
337.87 MB |
1 |
rollup-checkpoint-merge |
336.67 MB |
336.67 MB |
1 |
rollup-checkpoint-root-single-block |
1020 MB |
1020 MB |
1 |
rollup-checkpoint-root |
1020 MB |
1020 MB |
1 |
rollup-root |
337.87 MB |
337.87 MB |
1 |
rollup-tx-base-private |
451.42 MB |
451.42 MB |
1 |
rollup-tx-base-public |
466.49 MB |
466.49 MB |
1 |
rollup-tx-merge |
336.13 MB |
336.13 MB |
1 |
semaphore_depth_10 |
73.69 MB |
73.69 MB |
1 |
sha512_100_bytes |
71.96 MB |
71.96 MB |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
|
I think this looks good but it looks like the newly added test also passes in master so I'm not sure something new is done here. |
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Execution Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.
| Benchmark suite | Current: 9c98367 | Previous: d293d1c | Ratio |
|---|---|---|---|
rollup-root |
0.005 s |
0.004 s |
1.25 |
sha512-100-bytes |
0.077 s |
0.064 s |
1.20 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
|
@asterite That's true but I think we end up getting a small performance boost due to us inlining chains of blocks into one other in a tighter loop compared to before. |
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore(frontend): Elaborator assignment unit tests (noir-lang/noir#10362) fix(elaborator): Keep the status of the outer `unsafe` block if the inner is unnecessary (noir-lang/noir#10361) chore: Start greenlight of interpreter (noir-lang/noir#10354) chore: bump bb (noir-lang/noir#10359) feat: `TypeDefinition::as_type_with_generics` (noir-lang/noir#10315) fix(elaborator): Create new type variable for each generic kind of `FmtStr` (noir-lang/noir#10349) chore: require ≥2 `FunctionId`'s in `create_apply_function` (noir-lang/noir#10329) chore(test): Show that `#[oracle]` can take and return function pointers (noir-lang/noir#10178) fix: check value of `ArraySet` during `array_set_optimization` (noir-lang/noir#10325) chore(frontend): Comptime item generation unit tests (noir-lang/noir#10319) chore: bump external pinned commits (noir-lang/noir#10236) fix: do not simplify call-data values (noir-lang/noir#10032) chore: update directory name (noir-lang/noir#10348) feat: Add `#[must_use]` attribute to promote unused warning to an error (noir-lang/noir#10313) chore: green light for basic_conditional audit (noir-lang/noir#10134) chore: add unit tests to show some features of the analysis (noir-lang/noir#10286) fix(print): Convert `HirType::Function` into `PrintableType::Tuple` (noir-lang/noir#10189) chore(frontend): Quoting/unquoting roundtrip testing (noir-lang/noir#10327) fix: remove leading stars from block doc comments (noir-lang/noir#10316) fix: slice push_back when length is not known (noir-lang/noir#10206) chore: Fix typo in defunctionalize docs (noir-lang/noir#10321) chore(frontend): Elaborator comptime module docs (noir-lang/noir#10318) fix: "No size for slice" when using black_box (noir-lang/noir#10312) chore(audit): Fix vector items offset and other refactors (noir-lang/noir#10294) chore(audit): Refactors and tests for reg-to-reg movements (noir-lang/noir#10293) chore: Document each elaborator trait function (noir-lang/noir#10303) chore(frontend): Elaborator impls documentation and additional tests (noir-lang/noir#10302) feat(ACIR): reuse element_type_sizes blocks with the same structure (noir-lang/noir#10231) feat(SSA): simplify array_get from param (noir-lang/noir#10300) chore(frontend): Elaborator lazy globals and documentation (noir-lang/noir#10260) chore: avoid unrolling loop headers twice in unrolling passes (noir-lang/noir#10284) chore(audit): Refactors in `BrilligGlobals`, `ConstantAllocation` and `VariableLiveness` (noir-lang/noir#10265) chore: Move variable elaboration to its own file (noir-lang/noir#10285) chore(ACIR): use u32::MAX for PLACEHOLDER_BRILLIG_INDEX (noir-lang/noir#10287) feat(github): Add Security Policy (noir-lang/noir#10262) chore(ACIR): handle TODO in `more_than_eq_var` (noir-lang/noir#10274) chore(ACIR): document AcirValue (noir-lang/noir#10276) chore(Brillig): no need to handle ArrayLen intrinsic (noir-lang/noir#10280) chore(frontend): Split out trait impl setup when defining function meta data (noir-lang/noir#10271) feat(LSP): show errors on stdlib files (noir-lang/noir#10283) chore: typos and some refactors, tests, etc in `noirc_evaluator/src/acir` (noir-lang/noir#10255) chore(ACIR): handle TODO in radix_decompose (noir-lang/noir#10272) feat(brillig): Automatic register deallocation (noir-lang/noir#10253) chore: Add some detail to the trait documentation (noir-lang/noir#10273) chore(frontend): Elaborator struct collection docs (noir-lang/noir#10266) chore(ACIR): add a test for OpcodeResolutionError::AcirMainCallAttempted (noir-lang/noir#10254) fix(ssa-interpreter): Add integer modulus to unfit `Field` if the value comes from a subtraction (noir-lang/noir#10241) chore(frontend): Elaborator function module (noir-lang/noir#10252) chore: typos and some refactors, tests, etc in `acvm/src/compiler` (noir-lang/noir#10111) chore(ACIR): turn "todo" into "unreachable" (noir-lang/noir#10251) chore(frontend): Elaborator module doc comments (noir-lang/noir#10249) chore(ACIR): more Circuit, Expression and Opcode parsing (noir-lang/noir#10250) chore: greenlight Elaborator visibility (noir-lang/noir#10248) chore(audit): Brillig VM nits (noir-lang/noir#10237) fix(mem2reg): Update array set value alias set and propagate array get result as alias (noir-lang/noir#10242) chore(frontend): Split up traits tests module into submodules (noir-lang/noir#10229) chore(frontend): HIR printer module for inline macro expansion unit tests (noir-lang/noir#10232) chore(frontend): Modularize the Elaborator (noir-lang/noir#10202) chore: Improve compilation time on `rollup-tx-base-public` (noir-lang/noir#10224) fix(mem2reg): Updating referenced value invalidate addresses with unknown aliases (noir-lang/noir#10175) chore(frontend): Re-organize frontend tests (noir-lang/noir#10221) chore(ACIR): simpler AsSlice implementation (noir-lang/noir#10214) chore: clone indexed call results (noir-lang/noir#10140) chore(acvm): Optimize logic ops (noir-lang/noir#10222) chore: simplify `x > 0` to `x != 0` for unsigned types in ACIR (noir-lang/noir#10220) fix(ACIR): correct brillig parameter slice length for dynamic arrays (noir-lang/noir#10198) chore: redo typo PR by spuradage (noir-lang/noir#10226) feat: attempt to inline successors in `simplify_cfg` (noir-lang/noir#9608) chore: remove incremental mutation tests (noir-lang/noir#10212) chore(ACIR): display/parse memory arrays as b0, b1, etc. (noir-lang/noir#10211) chore(ACIR): no need to return types in `flatten` (noir-lang/noir#10210) chore(ACIR): make it clear that modulo is only for signed integers (noir-lang/noir#10209) chore: document precondition to unrolling SSA pass (noir-lang/noir#10208) chore(ACIR): better display/parse for blackbox calls (noir-lang/noir#10157) chore: assume Intrinsic::ArrayLen never reaches ACIR (noir-lang/noir#10201) chore(ACIR): optimize slice_insert (noir-lang/noir#10164) chore: add minimal reproductions for Cantina issues + typo fixes (noir-lang/noir#10120) chore: address clippy warnings (noir-lang/noir#10207) fix: address off-by-one error when removing casts before constraining to constant (noir-lang/noir#10194) chore(ACIR): prefer displaying `ASSERT return_value = ...` (noir-lang/noir#10195) chore: remove if-condition from `array_set_optimization_pre_check` (noir-lang/noir#10193) chore(ssa_fuzzer): allow brillig fuzz target to work in multi threads (noir-lang/noir#10100) chore: add incremental mutation testing (noir-lang/noir#10196) chore: ensure that `useful_instructions` cannot overflow (noir-lang/noir#10173) END_COMMIT_OVERRIDE Co-authored-by: benesjan <janbenes1234@gmail.com>
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore(frontend): Elaborator assignment unit tests (noir-lang/noir#10362) fix(elaborator): Keep the status of the outer `unsafe` block if the inner is unnecessary (noir-lang/noir#10361) chore: Start greenlight of interpreter (noir-lang/noir#10354) chore: bump bb (noir-lang/noir#10359) feat: `TypeDefinition::as_type_with_generics` (noir-lang/noir#10315) fix(elaborator): Create new type variable for each generic kind of `FmtStr` (noir-lang/noir#10349) chore: require ≥2 `FunctionId`'s in `create_apply_function` (noir-lang/noir#10329) chore(test): Show that `#[oracle]` can take and return function pointers (noir-lang/noir#10178) fix: check value of `ArraySet` during `array_set_optimization` (noir-lang/noir#10325) chore(frontend): Comptime item generation unit tests (noir-lang/noir#10319) chore: bump external pinned commits (noir-lang/noir#10236) fix: do not simplify call-data values (noir-lang/noir#10032) chore: update directory name (noir-lang/noir#10348) feat: Add `#[must_use]` attribute to promote unused warning to an error (noir-lang/noir#10313) chore: green light for basic_conditional audit (noir-lang/noir#10134) chore: add unit tests to show some features of the analysis (noir-lang/noir#10286) fix(print): Convert `HirType::Function` into `PrintableType::Tuple` (noir-lang/noir#10189) chore(frontend): Quoting/unquoting roundtrip testing (noir-lang/noir#10327) fix: remove leading stars from block doc comments (noir-lang/noir#10316) fix: slice push_back when length is not known (noir-lang/noir#10206) chore: Fix typo in defunctionalize docs (noir-lang/noir#10321) chore(frontend): Elaborator comptime module docs (noir-lang/noir#10318) fix: "No size for slice" when using black_box (noir-lang/noir#10312) chore(audit): Fix vector items offset and other refactors (noir-lang/noir#10294) chore(audit): Refactors and tests for reg-to-reg movements (noir-lang/noir#10293) chore: Document each elaborator trait function (noir-lang/noir#10303) chore(frontend): Elaborator impls documentation and additional tests (noir-lang/noir#10302) feat(ACIR): reuse element_type_sizes blocks with the same structure (noir-lang/noir#10231) feat(SSA): simplify array_get from param (noir-lang/noir#10300) chore(frontend): Elaborator lazy globals and documentation (noir-lang/noir#10260) chore: avoid unrolling loop headers twice in unrolling passes (noir-lang/noir#10284) chore(audit): Refactors in `BrilligGlobals`, `ConstantAllocation` and `VariableLiveness` (noir-lang/noir#10265) chore: Move variable elaboration to its own file (noir-lang/noir#10285) chore(ACIR): use u32::MAX for PLACEHOLDER_BRILLIG_INDEX (noir-lang/noir#10287) feat(github): Add Security Policy (noir-lang/noir#10262) chore(ACIR): handle TODO in `more_than_eq_var` (noir-lang/noir#10274) chore(ACIR): document AcirValue (noir-lang/noir#10276) chore(Brillig): no need to handle ArrayLen intrinsic (noir-lang/noir#10280) chore(frontend): Split out trait impl setup when defining function meta data (noir-lang/noir#10271) feat(LSP): show errors on stdlib files (noir-lang/noir#10283) chore: typos and some refactors, tests, etc in `noirc_evaluator/src/acir` (noir-lang/noir#10255) chore(ACIR): handle TODO in radix_decompose (noir-lang/noir#10272) feat(brillig): Automatic register deallocation (noir-lang/noir#10253) chore: Add some detail to the trait documentation (noir-lang/noir#10273) chore(frontend): Elaborator struct collection docs (noir-lang/noir#10266) chore(ACIR): add a test for OpcodeResolutionError::AcirMainCallAttempted (noir-lang/noir#10254) fix(ssa-interpreter): Add integer modulus to unfit `Field` if the value comes from a subtraction (noir-lang/noir#10241) chore(frontend): Elaborator function module (noir-lang/noir#10252) chore: typos and some refactors, tests, etc in `acvm/src/compiler` (noir-lang/noir#10111) chore(ACIR): turn "todo" into "unreachable" (noir-lang/noir#10251) chore(frontend): Elaborator module doc comments (noir-lang/noir#10249) chore(ACIR): more Circuit, Expression and Opcode parsing (noir-lang/noir#10250) chore: greenlight Elaborator visibility (noir-lang/noir#10248) chore(audit): Brillig VM nits (noir-lang/noir#10237) fix(mem2reg): Update array set value alias set and propagate array get result as alias (noir-lang/noir#10242) chore(frontend): Split up traits tests module into submodules (noir-lang/noir#10229) chore(frontend): HIR printer module for inline macro expansion unit tests (noir-lang/noir#10232) chore(frontend): Modularize the Elaborator (noir-lang/noir#10202) chore: Improve compilation time on `rollup-tx-base-public` (noir-lang/noir#10224) fix(mem2reg): Updating referenced value invalidate addresses with unknown aliases (noir-lang/noir#10175) chore(frontend): Re-organize frontend tests (noir-lang/noir#10221) chore(ACIR): simpler AsSlice implementation (noir-lang/noir#10214) chore: clone indexed call results (noir-lang/noir#10140) chore(acvm): Optimize logic ops (noir-lang/noir#10222) chore: simplify `x > 0` to `x != 0` for unsigned types in ACIR (noir-lang/noir#10220) fix(ACIR): correct brillig parameter slice length for dynamic arrays (noir-lang/noir#10198) chore: redo typo PR by spuradage (noir-lang/noir#10226) feat: attempt to inline successors in `simplify_cfg` (noir-lang/noir#9608) chore: remove incremental mutation tests (noir-lang/noir#10212) chore(ACIR): display/parse memory arrays as b0, b1, etc. (noir-lang/noir#10211) chore(ACIR): no need to return types in `flatten` (noir-lang/noir#10210) chore(ACIR): make it clear that modulo is only for signed integers (noir-lang/noir#10209) chore: document precondition to unrolling SSA pass (noir-lang/noir#10208) chore(ACIR): better display/parse for blackbox calls (noir-lang/noir#10157) chore: assume Intrinsic::ArrayLen never reaches ACIR (noir-lang/noir#10201) chore(ACIR): optimize slice_insert (noir-lang/noir#10164) chore: add minimal reproductions for Cantina issues + typo fixes (noir-lang/noir#10120) chore: address clippy warnings (noir-lang/noir#10207) fix: address off-by-one error when removing casts before constraining to constant (noir-lang/noir#10194) chore(ACIR): prefer displaying `ASSERT return_value = ...` (noir-lang/noir#10195) chore: remove if-condition from `array_set_optimization_pre_check` (noir-lang/noir#10193) chore(ssa_fuzzer): allow brillig fuzz target to work in multi threads (noir-lang/noir#10100) chore: add incremental mutation testing (noir-lang/noir#10196) chore: ensure that `useful_instructions` cannot overflow (noir-lang/noir#10173) END_COMMIT_OVERRIDE
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore(frontend): Elaborator assignment unit tests (noir-lang/noir#10362) fix(elaborator): Keep the status of the outer `unsafe` block if the inner is unnecessary (noir-lang/noir#10361) chore: Start greenlight of interpreter (noir-lang/noir#10354) chore: bump bb (noir-lang/noir#10359) feat: `TypeDefinition::as_type_with_generics` (noir-lang/noir#10315) fix(elaborator): Create new type variable for each generic kind of `FmtStr` (noir-lang/noir#10349) chore: require ≥2 `FunctionId`'s in `create_apply_function` (noir-lang/noir#10329) chore(test): Show that `#[oracle]` can take and return function pointers (noir-lang/noir#10178) fix: check value of `ArraySet` during `array_set_optimization` (noir-lang/noir#10325) chore(frontend): Comptime item generation unit tests (noir-lang/noir#10319) chore: bump external pinned commits (noir-lang/noir#10236) fix: do not simplify call-data values (noir-lang/noir#10032) chore: update directory name (noir-lang/noir#10348) feat: Add `#[must_use]` attribute to promote unused warning to an error (noir-lang/noir#10313) chore: green light for basic_conditional audit (noir-lang/noir#10134) chore: add unit tests to show some features of the analysis (noir-lang/noir#10286) fix(print): Convert `HirType::Function` into `PrintableType::Tuple` (noir-lang/noir#10189) chore(frontend): Quoting/unquoting roundtrip testing (noir-lang/noir#10327) fix: remove leading stars from block doc comments (noir-lang/noir#10316) fix: slice push_back when length is not known (noir-lang/noir#10206) chore: Fix typo in defunctionalize docs (noir-lang/noir#10321) chore(frontend): Elaborator comptime module docs (noir-lang/noir#10318) fix: "No size for slice" when using black_box (noir-lang/noir#10312) chore(audit): Fix vector items offset and other refactors (noir-lang/noir#10294) chore(audit): Refactors and tests for reg-to-reg movements (noir-lang/noir#10293) chore: Document each elaborator trait function (noir-lang/noir#10303) chore(frontend): Elaborator impls documentation and additional tests (noir-lang/noir#10302) feat(ACIR): reuse element_type_sizes blocks with the same structure (noir-lang/noir#10231) feat(SSA): simplify array_get from param (noir-lang/noir#10300) chore(frontend): Elaborator lazy globals and documentation (noir-lang/noir#10260) chore: avoid unrolling loop headers twice in unrolling passes (noir-lang/noir#10284) chore(audit): Refactors in `BrilligGlobals`, `ConstantAllocation` and `VariableLiveness` (noir-lang/noir#10265) chore: Move variable elaboration to its own file (noir-lang/noir#10285) chore(ACIR): use u32::MAX for PLACEHOLDER_BRILLIG_INDEX (noir-lang/noir#10287) feat(github): Add Security Policy (noir-lang/noir#10262) chore(ACIR): handle TODO in `more_than_eq_var` (noir-lang/noir#10274) chore(ACIR): document AcirValue (noir-lang/noir#10276) chore(Brillig): no need to handle ArrayLen intrinsic (noir-lang/noir#10280) chore(frontend): Split out trait impl setup when defining function meta data (noir-lang/noir#10271) feat(LSP): show errors on stdlib files (noir-lang/noir#10283) chore: typos and some refactors, tests, etc in `noirc_evaluator/src/acir` (noir-lang/noir#10255) chore(ACIR): handle TODO in radix_decompose (noir-lang/noir#10272) feat(brillig): Automatic register deallocation (noir-lang/noir#10253) chore: Add some detail to the trait documentation (noir-lang/noir#10273) chore(frontend): Elaborator struct collection docs (noir-lang/noir#10266) chore(ACIR): add a test for OpcodeResolutionError::AcirMainCallAttempted (noir-lang/noir#10254) fix(ssa-interpreter): Add integer modulus to unfit `Field` if the value comes from a subtraction (noir-lang/noir#10241) chore(frontend): Elaborator function module (noir-lang/noir#10252) chore: typos and some refactors, tests, etc in `acvm/src/compiler` (noir-lang/noir#10111) chore(ACIR): turn "todo" into "unreachable" (noir-lang/noir#10251) chore(frontend): Elaborator module doc comments (noir-lang/noir#10249) chore(ACIR): more Circuit, Expression and Opcode parsing (noir-lang/noir#10250) chore: greenlight Elaborator visibility (noir-lang/noir#10248) chore(audit): Brillig VM nits (noir-lang/noir#10237) fix(mem2reg): Update array set value alias set and propagate array get result as alias (noir-lang/noir#10242) chore(frontend): Split up traits tests module into submodules (noir-lang/noir#10229) chore(frontend): HIR printer module for inline macro expansion unit tests (noir-lang/noir#10232) chore(frontend): Modularize the Elaborator (noir-lang/noir#10202) chore: Improve compilation time on `rollup-tx-base-public` (noir-lang/noir#10224) fix(mem2reg): Updating referenced value invalidate addresses with unknown aliases (noir-lang/noir#10175) chore(frontend): Re-organize frontend tests (noir-lang/noir#10221) chore(ACIR): simpler AsSlice implementation (noir-lang/noir#10214) chore: clone indexed call results (noir-lang/noir#10140) chore(acvm): Optimize logic ops (noir-lang/noir#10222) chore: simplify `x > 0` to `x != 0` for unsigned types in ACIR (noir-lang/noir#10220) fix(ACIR): correct brillig parameter slice length for dynamic arrays (noir-lang/noir#10198) chore: redo typo PR by spuradage (noir-lang/noir#10226) feat: attempt to inline successors in `simplify_cfg` (noir-lang/noir#9608) chore: remove incremental mutation tests (noir-lang/noir#10212) chore(ACIR): display/parse memory arrays as b0, b1, etc. (noir-lang/noir#10211) chore(ACIR): no need to return types in `flatten` (noir-lang/noir#10210) chore(ACIR): make it clear that modulo is only for signed integers (noir-lang/noir#10209) chore: document precondition to unrolling SSA pass (noir-lang/noir#10208) chore(ACIR): better display/parse for blackbox calls (noir-lang/noir#10157) chore: assume Intrinsic::ArrayLen never reaches ACIR (noir-lang/noir#10201) chore(ACIR): optimize slice_insert (noir-lang/noir#10164) chore: add minimal reproductions for Cantina issues + typo fixes (noir-lang/noir#10120) chore: address clippy warnings (noir-lang/noir#10207) fix: address off-by-one error when removing casts before constraining to constant (noir-lang/noir#10194) chore(ACIR): prefer displaying `ASSERT return_value = ...` (noir-lang/noir#10195) chore: remove if-condition from `array_set_optimization_pre_check` (noir-lang/noir#10193) chore(ssa_fuzzer): allow brillig fuzz target to work in multi threads (noir-lang/noir#10100) chore: add incremental mutation testing (noir-lang/noir#10196) chore: ensure that `useful_instructions` cannot overflow (noir-lang/noir#10173) END_COMMIT_OVERRIDE
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore(frontend): Elaborator assignment unit tests (noir-lang/noir#10362) fix(elaborator): Keep the status of the outer `unsafe` block if the inner is unnecessary (noir-lang/noir#10361) chore: Start greenlight of interpreter (noir-lang/noir#10354) chore: bump bb (noir-lang/noir#10359) feat: `TypeDefinition::as_type_with_generics` (noir-lang/noir#10315) fix(elaborator): Create new type variable for each generic kind of `FmtStr` (noir-lang/noir#10349) chore: require ≥2 `FunctionId`'s in `create_apply_function` (noir-lang/noir#10329) chore(test): Show that `#[oracle]` can take and return function pointers (noir-lang/noir#10178) fix: check value of `ArraySet` during `array_set_optimization` (noir-lang/noir#10325) chore(frontend): Comptime item generation unit tests (noir-lang/noir#10319) chore: bump external pinned commits (noir-lang/noir#10236) fix: do not simplify call-data values (noir-lang/noir#10032) chore: update directory name (noir-lang/noir#10348) feat: Add `#[must_use]` attribute to promote unused warning to an error (noir-lang/noir#10313) chore: green light for basic_conditional audit (noir-lang/noir#10134) chore: add unit tests to show some features of the analysis (noir-lang/noir#10286) fix(print): Convert `HirType::Function` into `PrintableType::Tuple` (noir-lang/noir#10189) chore(frontend): Quoting/unquoting roundtrip testing (noir-lang/noir#10327) fix: remove leading stars from block doc comments (noir-lang/noir#10316) fix: slice push_back when length is not known (noir-lang/noir#10206) chore: Fix typo in defunctionalize docs (noir-lang/noir#10321) chore(frontend): Elaborator comptime module docs (noir-lang/noir#10318) fix: "No size for slice" when using black_box (noir-lang/noir#10312) chore(audit): Fix vector items offset and other refactors (noir-lang/noir#10294) chore(audit): Refactors and tests for reg-to-reg movements (noir-lang/noir#10293) chore: Document each elaborator trait function (noir-lang/noir#10303) chore(frontend): Elaborator impls documentation and additional tests (noir-lang/noir#10302) feat(ACIR): reuse element_type_sizes blocks with the same structure (noir-lang/noir#10231) feat(SSA): simplify array_get from param (noir-lang/noir#10300) chore(frontend): Elaborator lazy globals and documentation (noir-lang/noir#10260) chore: avoid unrolling loop headers twice in unrolling passes (noir-lang/noir#10284) chore(audit): Refactors in `BrilligGlobals`, `ConstantAllocation` and `VariableLiveness` (noir-lang/noir#10265) chore: Move variable elaboration to its own file (noir-lang/noir#10285) chore(ACIR): use u32::MAX for PLACEHOLDER_BRILLIG_INDEX (noir-lang/noir#10287) feat(github): Add Security Policy (noir-lang/noir#10262) chore(ACIR): handle TODO in `more_than_eq_var` (noir-lang/noir#10274) chore(ACIR): document AcirValue (noir-lang/noir#10276) chore(Brillig): no need to handle ArrayLen intrinsic (noir-lang/noir#10280) chore(frontend): Split out trait impl setup when defining function meta data (noir-lang/noir#10271) feat(LSP): show errors on stdlib files (noir-lang/noir#10283) chore: typos and some refactors, tests, etc in `noirc_evaluator/src/acir` (noir-lang/noir#10255) chore(ACIR): handle TODO in radix_decompose (noir-lang/noir#10272) feat(brillig): Automatic register deallocation (noir-lang/noir#10253) chore: Add some detail to the trait documentation (noir-lang/noir#10273) chore(frontend): Elaborator struct collection docs (noir-lang/noir#10266) chore(ACIR): add a test for OpcodeResolutionError::AcirMainCallAttempted (noir-lang/noir#10254) fix(ssa-interpreter): Add integer modulus to unfit `Field` if the value comes from a subtraction (noir-lang/noir#10241) chore(frontend): Elaborator function module (noir-lang/noir#10252) chore: typos and some refactors, tests, etc in `acvm/src/compiler` (noir-lang/noir#10111) chore(ACIR): turn "todo" into "unreachable" (noir-lang/noir#10251) chore(frontend): Elaborator module doc comments (noir-lang/noir#10249) chore(ACIR): more Circuit, Expression and Opcode parsing (noir-lang/noir#10250) chore: greenlight Elaborator visibility (noir-lang/noir#10248) chore(audit): Brillig VM nits (noir-lang/noir#10237) fix(mem2reg): Update array set value alias set and propagate array get result as alias (noir-lang/noir#10242) chore(frontend): Split up traits tests module into submodules (noir-lang/noir#10229) chore(frontend): HIR printer module for inline macro expansion unit tests (noir-lang/noir#10232) chore(frontend): Modularize the Elaborator (noir-lang/noir#10202) chore: Improve compilation time on `rollup-tx-base-public` (noir-lang/noir#10224) fix(mem2reg): Updating referenced value invalidate addresses with unknown aliases (noir-lang/noir#10175) chore(frontend): Re-organize frontend tests (noir-lang/noir#10221) chore(ACIR): simpler AsSlice implementation (noir-lang/noir#10214) chore: clone indexed call results (noir-lang/noir#10140) chore(acvm): Optimize logic ops (noir-lang/noir#10222) chore: simplify `x > 0` to `x != 0` for unsigned types in ACIR (noir-lang/noir#10220) fix(ACIR): correct brillig parameter slice length for dynamic arrays (noir-lang/noir#10198) chore: redo typo PR by spuradage (noir-lang/noir#10226) feat: attempt to inline successors in `simplify_cfg` (noir-lang/noir#9608) chore: remove incremental mutation tests (noir-lang/noir#10212) chore(ACIR): display/parse memory arrays as b0, b1, etc. (noir-lang/noir#10211) chore(ACIR): no need to return types in `flatten` (noir-lang/noir#10210) chore(ACIR): make it clear that modulo is only for signed integers (noir-lang/noir#10209) chore: document precondition to unrolling SSA pass (noir-lang/noir#10208) chore(ACIR): better display/parse for blackbox calls (noir-lang/noir#10157) chore: assume Intrinsic::ArrayLen never reaches ACIR (noir-lang/noir#10201) chore(ACIR): optimize slice_insert (noir-lang/noir#10164) chore: add minimal reproductions for Cantina issues + typo fixes (noir-lang/noir#10120) chore: address clippy warnings (noir-lang/noir#10207) fix: address off-by-one error when removing casts before constraining to constant (noir-lang/noir#10194) chore(ACIR): prefer displaying `ASSERT return_value = ...` (noir-lang/noir#10195) chore: remove if-condition from `array_set_optimization_pre_check` (noir-lang/noir#10193) chore(ssa_fuzzer): allow brillig fuzz target to work in multi threads (noir-lang/noir#10100) chore: add incremental mutation testing (noir-lang/noir#10196) chore: ensure that `useful_instructions` cannot overflow (noir-lang/noir#10173) END_COMMIT_OVERRIDE Co-authored-by: benesjan <janbenes1234@gmail.com>
Description
Problem*
Resolves
Summary*
This PR adds a forwards looking check to whether we can inline the blocks successor within
simplify_current_block.Additional Context
Documentation*
Check one:
PR Checklist*
cargo fmton default settings.