Skip to content

Conversation

asterite
Copy link
Collaborator

@asterite asterite commented Aug 14, 2025

Description

Problem

Resolves #9493

Summary

There's one regression among all of the performance improvements but it happens only with inliner=max. Definitely something to improve but maybe the improvements are worth it.

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 changed the title mem2reg: keep last loads from single predecessor feat: keep last loads from single predecessor in mem2reg Aug 14, 2025
Copy link
Contributor

github-actions bot commented Aug 14, 2025

Changes to Brillig bytecode sizes

Generated at commit: eab4f9213a90e1233ccc392b1d7505fd7cdba8e0, compared to commit: 8e8ce66d5d04b6a270b8764a4f3a1f03b23884d4

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
slice_regex_inliner_max +79 ❌ +3.91%
conditional_1_inliner_min -9 ✅ -1.87%
conditional_1_inliner_zero -9 ✅ -1.87%
uhashmap_inliner_max -221 ✅ -1.93%
conditional_1_inliner_max -16 ✅ -3.07%
loop_break_regression_8319_inliner_max -2 ✅ -4.17%
loop_break_regression_8319_inliner_zero -2 ✅ -4.17%
slice_dynamic_index_inliner_max -291 ✅ -14.35%
slice_dynamic_index_inliner_zero -291 ✅ -14.35%

Full diff report 👇
Program Brillig opcodes (+/-) %
slice_regex_inliner_max 2,102 (+79) +3.91%
regression_5252_inliner_min 3,369 (-3) -0.09%
slice_dynamic_index_inliner_min 2,167 (-2) -0.09%
regression_5252_inliner_zero 3,221 (-3) -0.09%
regression_5252_inliner_max 3,956 (-4) -0.10%
nested_array_dynamic_inliner_max 1,734 (-4) -0.23%
nested_array_in_slice_inliner_min 809 (-2) -0.25%
nested_array_in_slice_inliner_zero 809 (-2) -0.25%
nested_array_dynamic_inliner_min 1,442 (-4) -0.28%
nested_array_dynamic_inliner_zero 1,442 (-4) -0.28%
reference_counts_slices_inliner_0_inliner_min 1,212 (-4) -0.33%
reference_counts_inliner_max_inliner_zero 893 (-3) -0.33%
reference_counts_inliner_0_inliner_zero 893 (-3) -0.33%
reference_counts_inliner_min_inliner_zero 893 (-3) -0.33%
slice_loop_inliner_min 294 (-1) -0.34%
slice_loop_inliner_zero 284 (-1) -0.35%
reference_counts_inliner_0_inliner_min 1,044 (-4) -0.38%
reference_counts_inliner_min_inliner_min 1,044 (-4) -0.38%
reference_counts_inliner_max_inliner_min 1,044 (-4) -0.38%
reference_counts_slices_inliner_0_inliner_zero 1,001 (-4) -0.40%
slice_loop_inliner_max 227 (-1) -0.44%
to_be_bytes_inliner_min 198 (-1) -0.50%
global_nested_array_regression_9270_inliner_min 193 (-1) -0.52%
nested_array_in_slice_inliner_max 950 (-5) -0.52%
fold_numeric_generic_poseidon_inliner_min 568 (-3) -0.53%
no_predicates_numeric_generic_poseidon_inliner_min 568 (-3) -0.53%
to_be_bytes_inliner_max 189 (-1) -0.53%
to_be_bytes_inliner_zero 189 (-1) -0.53%
global_nested_array_regression_9270_inliner_max 185 (-1) -0.54%
global_nested_array_regression_9270_inliner_zero 185 (-1) -0.54%
while_loop_break_regression_8521_inliner_max 175 (-1) -0.57%
while_loop_break_regression_8521_inliner_min 175 (-1) -0.57%
while_loop_break_regression_8521_inliner_zero 175 (-1) -0.57%
fold_numeric_generic_poseidon_inliner_zero 497 (-3) -0.60%
no_predicates_numeric_generic_poseidon_inliner_zero 497 (-3) -0.60%
fold_2_to_17_inliner_min 348 (-3) -0.85%
bench_2_to_17_inliner_min 326 (-3) -0.91%
hashmap_inliner_min 8,873 (-82) -0.92%
fold_2_to_17_inliner_zero 320 (-3) -0.93%
regression_9303_inliner_max 105 (-1) -0.94%
regression_9303_inliner_min 105 (-1) -0.94%
regression_9303_inliner_zero 105 (-1) -0.94%
uhashmap_inliner_min 7,150 (-69) -0.96%
regression_9546_inliner_max 102 (-1) -0.97%
regression_9546_inliner_min 102 (-1) -0.97%
regression_9546_inliner_zero 102 (-1) -0.97%
uhashmap_inliner_zero 6,736 (-67) -0.98%
hashmap_inliner_zero 7,835 (-78) -0.99%
regression_9037_inliner_max 186 (-2) -1.06%
regression_9037_inliner_min 186 (-2) -1.06%
regression_9037_inliner_zero 186 (-2) -1.06%
slice_regex_inliner_min 1,834 (-20) -1.08%
array_sort_inliner_min 445 (-5) -1.11%
bench_2_to_17_inliner_zero 255 (-3) -1.16%
array_sort_inliner_max 411 (-5) -1.20%
array_sort_inliner_zero 411 (-5) -1.20%
slice_regex_inliner_zero 1,585 (-20) -1.25%
hashmap_inliner_max 18,737 (-239) -1.26%
fold_numeric_generic_poseidon_inliner_max 624 (-8) -1.27%
no_predicates_numeric_generic_poseidon_inliner_max 624 (-8) -1.27%
regression_8755_inliner_min 73 (-1) -1.35%
loop_break_regression_8319_inliner_min 206 (-3) -1.44%
bench_2_to_17_inliner_max 272 (-4) -1.45%
regression_8755_inliner_max 64 (-1) -1.54%
regression_8755_inliner_zero 64 (-1) -1.54%
fold_2_to_17_inliner_max 470 (-8) -1.67%
conditional_1_inliner_min 473 (-9) -1.87%
conditional_1_inliner_zero 473 (-9) -1.87%
uhashmap_inliner_max 11,233 (-221) -1.93%
conditional_1_inliner_max 506 (-16) -3.07%
loop_break_regression_8319_inliner_max 46 (-2) -4.17%
loop_break_regression_8319_inliner_zero 46 (-2) -4.17%
slice_dynamic_index_inliner_max 1,737 (-291) -14.35%
slice_dynamic_index_inliner_zero 1,737 (-291) -14.35%

Copy link
Contributor

github-actions bot commented Aug 14, 2025

Changes to number of Brillig opcodes executed

Generated at commit: eab4f9213a90e1233ccc392b1d7505fd7cdba8e0, compared to commit: 8e8ce66d5d04b6a270b8764a4f3a1f03b23884d4

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
slice_regex_inliner_max +325 ❌ +10.90%
regression_9037_inliner_max -100 ✅ -3.99%
regression_9037_inliner_min -100 ✅ -3.99%
regression_9037_inliner_zero -100 ✅ -3.99%
loop_break_regression_8319_inliner_min -48 ✅ -6.65%
slice_dynamic_index_inliner_max -332 ✅ -7.50%
slice_dynamic_index_inliner_zero -332 ✅ -7.50%
loop_break_regression_8319_inliner_max -48 ✅ -10.55%
loop_break_regression_8319_inliner_zero -48 ✅ -10.55%

Full diff report 👇
Program Brillig opcodes (+/-) %
slice_regex_inliner_max 3,308 (+325) +10.90%
slice_regex_inliner_zero 3,881 (+32) +0.83%
slice_regex_inliner_min 4,405 (+32) +0.73%
hashmap_inliner_max 57,127 (+205) +0.36%
uhashmap_inliner_max 143,684 (+131) +0.09%
regression_5252_inliner_max 758,808 (-66) -0.01%
regression_5252_inliner_min 940,597 (-96) -0.01%
regression_5252_inliner_zero 928,670 (-96) -0.01%
to_be_bytes_inliner_min 1,888 (-1) -0.05%
to_be_bytes_inliner_max 1,875 (-1) -0.05%
to_be_bytes_inliner_zero 1,875 (-1) -0.05%
nested_array_dynamic_inliner_min 2,836 (-2) -0.07%
nested_array_dynamic_inliner_zero 2,836 (-2) -0.07%
nested_array_dynamic_inliner_max 2,652 (-2) -0.08%
nested_array_in_slice_inliner_min 1,295 (-1) -0.08%
nested_array_in_slice_inliner_zero 1,295 (-1) -0.08%
slice_loop_inliner_min 1,170 (-1) -0.09%
slice_loop_inliner_zero 1,156 (-1) -0.09%
slice_loop_inliner_max 840 (-1) -0.12%
nested_array_in_slice_inliner_max 1,144 (-3) -0.26%
global_nested_array_regression_9270_inliner_min 266 (-1) -0.37%
global_nested_array_regression_9270_inliner_max 254 (-1) -0.39%
global_nested_array_regression_9270_inliner_zero 254 (-1) -0.39%
uhashmap_inliner_min 174,205 (-889) -0.51%
uhashmap_inliner_zero 166,316 (-860) -0.51%
hashmap_inliner_min 79,587 (-507) -0.63%
hashmap_inliner_zero 72,712 (-495) -0.68%
conditional_1_inliner_min 1,886 (-22) -1.15%
conditional_1_inliner_zero 1,886 (-22) -1.15%
conditional_1_inliner_max 1,860 (-22) -1.17%
fold_numeric_generic_poseidon_inliner_max 3,717 (-45) -1.20%
no_predicates_numeric_generic_poseidon_inliner_max 3,717 (-45) -1.20%
array_sort_inliner_min 963 (-12) -1.23%
regression_9303_inliner_max 159 (-2) -1.24%
regression_9303_inliner_min 159 (-2) -1.24%
regression_9303_inliner_zero 159 (-2) -1.24%
array_sort_inliner_max 872 (-11) -1.25%
array_sort_inliner_zero 872 (-11) -1.25%
regression_8755_inliner_min 74 (-1) -1.33%
fold_numeric_generic_poseidon_inliner_min 4,615 (-72) -1.54%
no_predicates_numeric_generic_poseidon_inliner_min 4,615 (-72) -1.54%
regression_8755_inliner_max 61 (-1) -1.61%
regression_8755_inliner_zero 61 (-1) -1.61%
fold_numeric_generic_poseidon_inliner_zero 4,378 (-72) -1.62%
no_predicates_numeric_generic_poseidon_inliner_zero 4,378 (-72) -1.62%
bench_2_to_17_inliner_max 421,531 (-8,162) -1.90%
fold_2_to_17_inliner_max 773,783 (-15,524) -1.97%
bench_2_to_17_inliner_min 550,629 (-11,434) -2.03%
fold_2_to_17_inliner_min 1,047,309 (-21,748) -2.03%
fold_2_to_17_inliner_zero 1,047,237 (-21,748) -2.03%
bench_2_to_17_inliner_zero 457,474 (-11,434) -2.44%
regression_9037_inliner_max 2,408 (-100) -3.99%
regression_9037_inliner_min 2,408 (-100) -3.99%
regression_9037_inliner_zero 2,408 (-100) -3.99%
loop_break_regression_8319_inliner_min 674 (-48) -6.65%
slice_dynamic_index_inliner_max 4,094 (-332) -7.50%
slice_dynamic_index_inliner_zero 4,094 (-332) -7.50%
loop_break_regression_8319_inliner_max 407 (-48) -10.55%
loop_break_regression_8319_inliner_zero 407 (-48) -10.55%

Copy link
Contributor

github-actions bot commented Aug 14, 2025

Changes to circuit sizes

Generated at commit: eab4f9213a90e1233ccc392b1d7505fd7cdba8e0, compared to commit: 8e8ce66d5d04b6a270b8764a4f3a1f03b23884d4

🧾 Summary (10% most significant diffs)

Program ACIR opcodes (+/-) % Circuit size (+/-) %
nested_array_dynamic -2 ✅ -0.06% +1 ❌ +0.01%
nested_array_in_slice -1 ✅ -0.10% -29 ✅ -0.53%

Full diff report 👇
Program ACIR opcodes (+/-) % Circuit size (+/-) %
nested_array_dynamic 3,232 (-2) -0.06% 12,611 (+1) +0.01%
nested_array_in_slice 957 (-1) -0.10% 5,433 (-29) -0.53%

@asterite
Copy link
Collaborator Author

Closing because I just wanted to be sure this could be a potential optimization before capturing an audit issue. See #9493

@asterite asterite closed this Aug 14, 2025
@asterite asterite deleted the ab/mem2reg-preserve-last-loads-between-blocks branch August 14, 2025 14:31
Copy link
Contributor

@github-actions github-actions bot left a 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: fb8014a Previous: 8e8ce66 Ratio
test_report_noir-lang_noir-bignum_ 519 s 383 s 1.36
test_report_zkpassport_noir_rsa_ 2 s 1 s 2

This comment was automatically generated by workflow using github-action-benchmark.

CC: @TomAFrench

@asterite asterite reopened this Aug 14, 2025
@asterite asterite force-pushed the ab/mem2reg-preserve-last-loads-between-blocks branch from 2c37b1c to de154df Compare August 14, 2025 14:58
@asterite asterite changed the title feat: keep last loads from single predecessor in mem2reg feat: keep last loads from predecessors in mem2reg Aug 14, 2025
@asterite asterite closed this Aug 14, 2025
@asterite asterite restored the ab/mem2reg-preserve-last-loads-between-blocks branch August 21, 2025 16:42
@asterite asterite reopened this Aug 21, 2025
@asterite asterite marked this pull request as ready for review August 21, 2025 16:59
@asterite asterite requested a review from a team August 21, 2025 17:26
@vezenovm vezenovm added the bench-show Display benchmark results on PR label Aug 21, 2025
@vezenovm
Copy link
Contributor

There's one regression among all of the performance improvements but it happens only with inliner=max.

Yeah if the only regression is with a max inliner setting I think this is a good optimization. It is unlikely projects in production will want a maximally aggressive inliner.

@vezenovm
Copy link
Contributor

vezenovm commented Aug 21, 2025

test_report_noir-lang_noir_bigcurve_ 380 s 287 s 1.32

I added bench-show as mem2reg is one of the more memory heavy passes so I want to see the effect on our benchmarks. bigcurve looks to be the only library that caused an alert, but it would be good to see all the results.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

ACVM Benchmarks

Benchmark suite Current: fb8014a Previous: 8e8ce66 Ratio
purely_sequential_opcodes 252098 ns/iter (± 773) 250253 ns/iter (± 364) 1.01
perfectly_parallel_opcodes 222284 ns/iter (± 4653) 217849 ns/iter (± 1429) 1.02
perfectly_parallel_batch_inversion_opcodes 2793154 ns/iter (± 2048) 2786444 ns/iter (± 1165) 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Opcode count

Benchmark suite Current: fb8014a Previous: 8e8ce66 Ratio
private-kernel-inner 14792 opcodes 14792 opcodes 1
private-kernel-reset 68868 opcodes 68868 opcodes 1
private-kernel-tail 11177 opcodes 11177 opcodes 1
rollup-base-private 221335 opcodes 221323 opcodes 1.00
rollup-base-public 159954 opcodes 159942 opcodes 1.00
rollup-block-root-empty 68106 opcodes 68106 opcodes 1
rollup-block-root-single-tx 963855 opcodes 963851 opcodes 1.00
rollup-block-root 965141 opcodes 965137 opcodes 1.00
rollup-merge 1409 opcodes 1409 opcodes 1
rollup-root 2631 opcodes 2631 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.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Compilation Time

Benchmark suite Current: fb8014a Previous: 8e8ce66 Ratio
private-kernel-inner 1.68 s 1.638 s 1.03
private-kernel-reset 7.884 s 7.916 s 1.00
private-kernel-tail 1.37 s 1.334 s 1.03
rollup-base-private 15.36 s 15.44 s 0.99
rollup-base-public 13.26 s 13.5 s 0.98
rollup-block-root-empty 22.88 s 21.18 s 1.08
rollup-block-root-single-tx 209 s 194 s 1.08
rollup-block-root 192 s 195 s 0.98
rollup-merge 1.36 s 1.356 s 1.00
rollup-root 1.45 s 1.496 s 0.97
semaphore-depth-10 0.749 s 0.773 s 0.97
sha512-100-bytes 1.599 s 1.663 s 0.96

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Execution Time

Benchmark suite Current: fb8014a Previous: 8e8ce66 Ratio
private-kernel-inner 0.017 s 0.014 s 1.21
private-kernel-reset 0.154 s 0.154 s 1
private-kernel-tail 0.01 s 0.011 s 0.91
rollup-base-private 0.264 s 0.266 s 0.99
rollup-base-public 0.159 s 0.162 s 0.98
rollup-block-root 13.4 s 13.2 s 1.02
rollup-merge 0.002 s 0.002 s 1
rollup-root 0.004 s 0.004 s 1
semaphore-depth-10 0.018 s 0.019 s 0.95
sha512-100-bytes 0.102 s 0.089 s 1.15

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a 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 'Execution Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: fb8014a Previous: 8e8ce66 Ratio
private-kernel-inner 0.017 s 0.014 s 1.21

This comment was automatically generated by workflow using github-action-benchmark.

CC: @TomAFrench

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Artifact Size

Benchmark suite Current: fb8014a Previous: 8e8ce66 Ratio
private-kernel-inner 708.9 KB 709.1 KB 1.00
private-kernel-reset 2032.5 KB 2033.1 KB 1.00
private-kernel-tail 535.2 KB 535.9 KB 1.00
rollup-base-private 4319.4 KB 4317.7 KB 1.00
rollup-base-public 3329.9 KB 3329.6 KB 1.00
rollup-block-root-empty 3847 KB 3846.8 KB 1.00
rollup-block-root-single-tx 30729.7 KB 30728.8 KB 1.00
rollup-block-root 30774.2 KB 30774.4 KB 1.00
rollup-merge 187 KB 187 KB 1
rollup-root 388.9 KB 388.9 KB 1
semaphore-depth-10 631.5 KB 631.5 KB 1
sha512-100-bytes 525.2 KB 525.2 KB 1

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Compilation Memory

Benchmark suite Current: fb8014a Previous: 8e8ce66 Ratio
private-kernel-inner 239.7 MB 239.91 MB 1.00
private-kernel-reset 549.1 MB 549.11 MB 1.00
private-kernel-tail 213.84 MB 213.85 MB 1.00
rollup-base-private 1350 MB 1350 MB 1
rollup-base-public 1400 MB 1420 MB 0.99
rollup-block-root-empty 1090 MB 1090 MB 1
rollup-block-root-single-tx 9550 MB 9550 MB 1
rollup-block-root 9560 MB 9560 MB 1
rollup-merge 330.56 MB 330.56 MB 1
rollup-root 341.38 MB 341.38 MB 1
semaphore_depth_10 104.76 MB 104.76 MB 1
sha512_100_bytes 234.74 MB 234.83 MB 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Execution Memory

Benchmark suite Current: fb8014a Previous: 8e8ce66 Ratio
private-kernel-inner 206.72 MB 206.72 MB 1
private-kernel-reset 243.53 MB 243.54 MB 1.00
private-kernel-tail 195.94 MB 195.95 MB 1.00
rollup-base-private 500.25 MB 500.25 MB 1
rollup-base-public 432.89 MB 432.89 MB 1
rollup-block-root 1500 MB 1500 MB 1
rollup-merge 328.19 MB 328.19 MB 1
rollup-root 330.55 MB 330.55 MB 1
semaphore_depth_10 69.5 MB 69.5 MB 1
sha512_100_bytes 54.99 MB 54.99 MB 1

This comment was automatically generated by workflow using github-action-benchmark.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Test Suite Duration

Benchmark suite Current: fb8014a Previous: 8e8ce66 Ratio
test_report_AztecProtocol_aztec-packages_noir-projects_aztec-nr 100 s 97 s 1.03
test_report_AztecProtocol_aztec-packages_noir-projects_noir-contracts 110 s 109 s 1.01
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_blob 152 s 161 s 0.94
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_private-kernel-lib 210 s 220 s 0.95
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_reset-kernel-lib 33 s 34 s 0.97
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_rollup-lib 659 s 642 s 1.03
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_types 103 s 101 s 1.02
test_report_noir-lang_noir-bignum_ 519 s 383 s 1.36
test_report_noir-lang_noir_bigcurve_ 358 s 336 s 1.07
test_report_noir-lang_sha256_ 15 s 15 s 1
test_report_noir-lang_sha512_ 14 s 14 s 1
test_report_zkpassport_noir-ecdsa_ 1 s 3 s 0.33
test_report_zkpassport_noir_rsa_ 2 s 1 s 2

This comment was automatically generated by workflow using github-action-benchmark.

@vezenovm
Copy link
Contributor

test_report_noir-lang_noir-bignum_ 519 s 383 s 1.36
test_report_noir-lang_noir_bigcurve_ 358 s 336 s 1.07

The test suite timings seem to jump around quite a bit, but the other compilation time and memory benchmarks all look good.

@jfecher jfecher added this pull request to the merge queue Aug 21, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Aug 21, 2025
@asterite asterite added this pull request to the merge queue Aug 21, 2025
Merged via the queue into master with commit 10a597f Aug 21, 2025
122 checks passed
@asterite asterite deleted the ab/mem2reg-preserve-last-loads-between-blocks branch August 21, 2025 20:31
AztecBot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 22, 2025
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore: some mem2reg refactors regarding expressions and aliases (noir-lang/noir#9610)
feat: keep last loads from predecessors in mem2reg (noir-lang/noir#9492)
chore: Update flattening docs (noir-lang/noir#9588)
chore: remove redundant globals creation (noir-lang/noir#9606)
chore: simplify Expression in mem2reg (noir-lang/noir#9599)
chore: remove duplicate `contains_reference` in mem2reg (noir-lang/noir#9602)
chore!: remove `verify_signature_slice` methods from stdlib (noir-lang/noir#9597)
fix(expand): correctly handle nested dereferences (noir-lang/noir#9598)
fix(ssa): Do not simplify on lhs being zero for shifts (noir-lang/noir#9596)
chore: store last loads in `HashSet` instead of `HashMap` in mem2reg (noir-lang/noir#9498)
chore: `--no-ssa-locations` for `nargo interpret` and show negative values when printing SSA (noir-lang/noir#9586)
fix: `assert_constant` refactors and fixes from audit (noir-lang/noir#9547)
fix(ssa): Consider `shl` and `shr` to have side effects (noir-lang/noir#9580)
fix: avoid invalid cast in `remove_bit_shifts` (noir-lang/noir#9570)
fix(mem2reg): Consider aliases of a loaded address to be loaded from as well (noir-lang/noir#9567)
fix: Consume correct number of fields when printing references (noir-lang/noir#9579)
chore: Add a section for numeric type aliases (noir-lang/noir#9589)
chore(remove_paired_rc): Add various unit tests (noir-lang/noir#9425)
fix: incorrect max bit size in `remove_bit_shifts` (noir-lang/noir#9585)
chore(ssa): Simplify shl/shr identity operations (noir-lang/noir#9587)
chore: greenlight `brillig_array_get_and_set` for audits (noir-lang/noir#9540)
chore(ssa): Update comments on `loop_invariant` for audit and some missing unit tests (noir-lang/noir#9574)
chore: Switch to node v22.15.0 (noir-lang/noir#9582)
chore: Update unrolling docs for audit (noir-lang/noir#9572)
chore: greenlight `array_set_optimization` (noir-lang/noir#9560)
fix(acir_gen): Keep range checks before side effects (noir-lang/noir#9340)
END_COMMIT_OVERRIDE
github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 22, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore: some mem2reg refactors regarding expressions and aliases
(noir-lang/noir#9610)
feat: keep last loads from predecessors in mem2reg
(noir-lang/noir#9492)
chore: Update flattening docs
(noir-lang/noir#9588)
chore: remove redundant globals creation
(noir-lang/noir#9606)
chore: simplify Expression in mem2reg
(noir-lang/noir#9599)
chore: remove duplicate `contains_reference` in mem2reg
(noir-lang/noir#9602)
chore!: remove `verify_signature_slice` methods from stdlib
(noir-lang/noir#9597)
fix(expand): correctly handle nested dereferences
(noir-lang/noir#9598)
fix(ssa): Do not simplify on lhs being zero for shifts
(noir-lang/noir#9596)
chore: store last loads in `HashSet` instead of `HashMap` in mem2reg
(noir-lang/noir#9498)
chore: `--no-ssa-locations` for `nargo interpret` and show negative
values when printing SSA (noir-lang/noir#9586)
fix: `assert_constant` refactors and fixes from audit
(noir-lang/noir#9547)
fix(ssa): Consider `shl` and `shr` to have side effects
(noir-lang/noir#9580)
fix: avoid invalid cast in `remove_bit_shifts`
(noir-lang/noir#9570)
fix(mem2reg): Consider aliases of a loaded address to be loaded from as
well (noir-lang/noir#9567)
fix: Consume correct number of fields when printing references
(noir-lang/noir#9579)
chore: Add a section for numeric type aliases
(noir-lang/noir#9589)
chore(remove_paired_rc): Add various unit tests
(noir-lang/noir#9425)
fix: incorrect max bit size in `remove_bit_shifts`
(noir-lang/noir#9585)
chore(ssa): Simplify shl/shr identity operations
(noir-lang/noir#9587)
chore: greenlight `brillig_array_get_and_set` for audits
(noir-lang/noir#9540)
chore(ssa): Update comments on `loop_invariant` for audit and some
missing unit tests (noir-lang/noir#9574)
chore: Switch to node v22.15.0
(noir-lang/noir#9582)
chore: Update unrolling docs for audit
(noir-lang/noir#9572)
chore: greenlight `array_set_optimization`
(noir-lang/noir#9560)
fix(acir_gen): Keep range checks before side effects
(noir-lang/noir#9340)
END_COMMIT_OVERRIDE
github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Aug 23, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore: some mem2reg refactors regarding expressions and aliases
(noir-lang/noir#9610)
feat: keep last loads from predecessors in mem2reg
(noir-lang/noir#9492)
chore: Update flattening docs
(noir-lang/noir#9588)
chore: remove redundant globals creation
(noir-lang/noir#9606)
chore: simplify Expression in mem2reg
(noir-lang/noir#9599)
chore: remove duplicate `contains_reference` in mem2reg
(noir-lang/noir#9602)
chore!: remove `verify_signature_slice` methods from stdlib
(noir-lang/noir#9597)
fix(expand): correctly handle nested dereferences
(noir-lang/noir#9598)
fix(ssa): Do not simplify on lhs being zero for shifts
(noir-lang/noir#9596)
chore: store last loads in `HashSet` instead of `HashMap` in mem2reg
(noir-lang/noir#9498)
chore: `--no-ssa-locations` for `nargo interpret` and show negative
values when printing SSA (noir-lang/noir#9586)
fix: `assert_constant` refactors and fixes from audit
(noir-lang/noir#9547)
fix(ssa): Consider `shl` and `shr` to have side effects
(noir-lang/noir#9580)
fix: avoid invalid cast in `remove_bit_shifts`
(noir-lang/noir#9570)
fix(mem2reg): Consider aliases of a loaded address to be loaded from as
well (noir-lang/noir#9567)
fix: Consume correct number of fields when printing references
(noir-lang/noir#9579)
chore: Add a section for numeric type aliases
(noir-lang/noir#9589)
chore(remove_paired_rc): Add various unit tests
(noir-lang/noir#9425)
fix: incorrect max bit size in `remove_bit_shifts`
(noir-lang/noir#9585)
chore(ssa): Simplify shl/shr identity operations
(noir-lang/noir#9587)
chore: greenlight `brillig_array_get_and_set` for audits
(noir-lang/noir#9540)
chore(ssa): Update comments on `loop_invariant` for audit and some
missing unit tests (noir-lang/noir#9574)
chore: Switch to node v22.15.0
(noir-lang/noir#9582)
chore: Update unrolling docs for audit
(noir-lang/noir#9572)
chore: greenlight `array_set_optimization`
(noir-lang/noir#9560)
fix(acir_gen): Keep range checks before side effects
(noir-lang/noir#9340)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bench-show Display benchmark results on PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

mem2reg: last loads from predecessors could be reused
3 participants