Skip to content

Commit

Permalink
Tuning the optimizer pipeline (#6072)
Browse files Browse the repository at this point in the history
## Description
After changes to the pipeline sequence in #6024, there were some
regressions. This change mitigates that to an extent.

Closes #6047 

<details>
  <summary>Click here for the numbers</summary>

test | before | after | %reduction
-- | -- | -- | --
should_pass/return_in_strange_positions | 768 | 280 | 63.5416666666667
should_pass/payable_non_zero_coins | 1584 | 1584 | 0
should_pass/superabi_contract_calls | 4512 | 4512 | 0
should_pass/superabi_supertrait_same_methods | 4736 | 4736 | 0
should_pass/stdlib/vec | 107304 | 107096 | 0.193841795273242
should_pass/stdlib/alloc_test | 928 | 824 | 11.2068965517241
should_pass/stdlib/vec_swap | 25680 | 23792 | 7.35202492211838
should_pass/stdlib/intrinsics | 896 | 272 | 69.6428571428571
should_pass/stdlib/ge_test | 560 | 560 | 0
should_pass/stdlib/assert_ne_revert | 560 | 560 | 0
should_pass/stdlib/assert_eq | 7784 | 6416 | 17.5745118191161
should_pass/stdlib/u128_log_test | 4768 | 4568 | 4.19463087248322
should_pass/stdlib/u128_root_test | 4488 | 4400 | 1.96078431372549
should_pass/stdlib/raw_ptr | 5000 | 4512 | 9.76
should_pass/stdlib/identity_eq | 2456 | 2424 | 1.30293159609121
should_pass/stdlib/eq_custom_type | 672 | 672 | 0
should_pass/stdlib/contract_id_type | 648 | 592 | 8.64197530864197
should_pass/stdlib/option_eq | 11704 | 12240 | -4.57963089542037
should_pass/stdlib/option | 24000 | 22912 | 4.53333333333333
should_pass/stdlib/eq_generic | 176 | 176 | 0
should_pass/stdlib/u128_div_test | 2800 | 2720 | 2.85714285714286
should_pass/stdlib/generic_empty_struct_with_constraint | 176 | 176 | 0
should_pass/stdlib/u128_test | 6744 | 6512 | 3.44009489916963
should_pass/stdlib/assert_test | 512 | 272 | 46.875
should_pass/stdlib/result | 9720 | 8944 | 7.98353909465021
should_pass/stdlib/contract_id_test | 648 | 592 | 8.64197530864197
should_pass/stdlib/assert_ne | 6352 | 6120 | 3.65239294710327
should_pass/stdlib/address_test | 4320 | 4144 | 4.07407407407407
should_pass/stdlib/storage_vec_insert | 9000 | 9000 | 0
should_pass/stdlib/block_height | 312 | 312 | 0
should_pass/stdlib/u128_mul_test | 1536 | 1448 | 5.72916666666667
should_pass/stdlib/if_type_revert | 32 | 32 | 0
should_pass/stdlib/b512_test | 3472 | 3352 | 3.45622119815668
should_pass/stdlib/sha256 | 3184 | 2168 | 31.9095477386935
should_pass/stdlib/assert_eq_revert | 568 | 568 | 0
should_pass/stdlib/chess | 2048 | 2048 | 0
should_pass/stdlib/require | 1256 | 1168 | 7.00636942675159
should_pass/stdlib/b512_struct_alignment | 728 | 728 | 0
should_pass/stdlib/iterator | 2872 | 2640 | 8.07799442896936
should_pass/stdlib/raw_slice | 1056 | 960 | 9.09090909090909
should_pass/test_contracts/nested_struct_args_contract | 1352 | 1352 | 0
should_pass/test_contracts/abi_with_generic_types | 4240 | 4240 | 0
should_pass/test_contracts/basic_storage | 41312 | 33744 |
18.3191324554609
should_pass/test_contracts/storage_access_contract | 37696 | 34136 |
9.44397283531409
should_pass/test_contracts/return_struct | 4584 | 3328 |
27.3996509598604
should_pass/test_contracts/array_of_structs_contract | 4200 | 3680 |
12.3809523809524
should_pass/test_contracts/auth_testing_contract | 952 | 952 | 0
should_pass/test_contracts/issue_1512_repro | 2704 | 2528 |
6.50887573964497
should_pass/test_contracts/abi_with_same_name_types | 1504 | 1416 |
5.85106382978723
should_pass/test_contracts/context_testing_contract | 4672 | 4240 |
9.24657534246575
should_pass/test_contracts/storage_namespace | 41312 | 33744 |
18.3191324554609
should_pass/test_contracts/increment_contract | 4504 | 4248 |
5.68383658969805
should_pass/test_contracts/multiple_impl | 1512 | 1240 | 17.989417989418
should_pass/test_contracts/abi_with_tuples_contract | 1936 | 1936 | 0
should_pass/test_contracts/contract_with_type_aliases | 4032 | 4032 | 0
should_pass/test_contracts/test_fuel_coin_contract | 4144 | 3400 |
17.953667953668
should_pass/test_contracts/storage_enum_contract | 24560 | 20744 |
15.5374592833876
should_pass/test_contracts/balance_test_contract | 952 | 952 | 0
should_pass/evm/evm_basic | 176 | 176 | 0
should_pass/blanket_impl_u16 | 288 | 288 | 0
should_pass/empty_fields_in_storage_struct | 31224 | 31224 | 0
should_pass/forc/dependency_package_field | 272 | 272 | 0
should_pass/forc/workspace_building | 24 | 24 | 0
should_pass/forc/parent_pkg_manifest/contract_a | 960 | 960 | 0
should_pass/forc/dependency_patching | 272 | 272 | 0
should_pass/forc/contract_dependencies/contract_c | 960 | 960 | 0
should_pass/forc/contract_dependencies/contract_b | 960 | 960 | 0
should_pass/forc/contract_dependencies/contract_a | 1104 | 1104 | 0
should_pass/conditional_compilation/run | 288 | 288 | 0
should_pass/language/where_clause_functions | 2216 | 2072 |
6.49819494584837
should_pass/language/basic_func_decl | 272 | 272 | 0
should_pass/language/associated_const_trait_impl_method | 296 | 296 | 0
should_pass/language/left_to_right_func_args_evaluation | 304 | 304 | 0
should_pass/language/out_of_order_decl | 280 | 280 | 0
should_pass/language/where_clause_traits | 264 | 264 | 0

should_pass/language/references/reassigning_via_references_passed_and_returned_to_and_from_functions
| 41144 | 39816 | 3.22768811977445

should_pass/language/references/reassigning_via_references_in_aggregates
| 5696 | 5176 | 9.12921348314607
should_pass/language/references/referencing_function_parameters | 4584 |
3936 | 14.1361256544503
should_pass/language/references/referencing_expressions | 8840 | 7960 |
9.95475113122172
should_pass/language/references/references_and_type_aliases | 792 | 712
| 10.1010101010101
should_pass/language/references/references_in_asm_blocks | 2592 | 2192 |
15.4320987654321
should_pass/language/references/mutability_of_references | 1392 | 904 |
35.0574712643678
should_pass/language/references/dereferencing_operator_dot_on_tuples |
135552 | 125072 | 7.73135033050047

should_pass/language/references/passing_and_returning_references_to_and_from_functions
| 19224 | 15968 | 16.9371618809821
should_pass/language/references/type_unification_of_references | 3984 |
3432 | 13.855421686747
should_pass/language/references/dereferencing_control_flow_expressions |
1672 | 1168 | 30.1435406698565
should_pass/language/references/referencing_parts_of_aggregates | 7144 |
6928 | 3.02351623740202
should_pass/language/references/dereferencing_operator_index | 99032 |
92480 | 6.61604329913563
should_pass/language/references/dereferencing_operator_star | 173776 |
151312 | 12.9269864653347
should_pass/language/references/reassigning_via_references_to_values |
14840 | 14184 | 4.42048517520216
should_pass/language/references/referencing_references | 1512 | 1104 |
26.984126984127
should_pass/language/references/references_in_aggregates | 4504 | 3904 |
13.3214920071048
should_pass/language/references/referencing_control_flow_expressions |
1080 | 792 | 26.6666666666667
should_pass/language/references/references_and_generics | 3744 | 3560 |
4.91452991452992

should_pass/language/references/reassigning_via_references_to_expressions
| 42600 | 37352 | 12.3192488262911
should_pass/language/references/dereferencing_operator_dot_on_structs |
135552 | 125072 | 7.73135033050047
should_pass/language/references/impl_reference_types | 8264 | 7896 |
4.45304937076476
should_pass/language/references/referencing_local_vars_and_values |
40104 | 36456 | 9.09634949132256
should_pass/language/integer_type_inference | 1512 | 1512 | 0
should_pass/language/numeric_constants | 632 | 272 | 56.9620253164557
should_pass/language/mutable_arrays_struct | 288 | 288 | 0
should_pass/language/same_const_name_lib | 24 | 24 | 0
should_pass/language/associated_type_iterator | 2152 | 1960 |
8.92193308550186
should_pass/language/match_expressions_unreachable_last_arm | 2968 |
2968 | 0
should_pass/language/multi_item_import | 264 | 264 | 0
should_pass/language/ref_mutable_arrays_inline | 288 | 288 | 0
should_pass/language/u256/u256_abi | 1072 | 768 | 28.3582089552239
should_pass/language/u256/u256_operators | 6008 | 6008 | 0
should_pass/language/module_dep | 24 | 24 | 0
should_pass/language/generic_inside_generic | 376 | 376 | 0
should_pass/language/associated_const_trait_method | 296 | 296 | 0
should_pass/language/struct_instantiation | 2536 | 2320 |
8.51735015772871
should_pass/language/module_dep_multiple | 24 | 24 | 0
should_pass/language/method_indirect_inference | 552 | 552 | 0
should_pass/language/where_clause_generic_tuple | 280 | 280 | 0
should_pass/language/generic_impl_self | 2848 | 2688 | 5.61797752808989
should_pass/language/retd_struct | 728 | 728 | 0
should_pass/language/fallback_only | 2256 | 1672 | 25.886524822695
should_pass/language/generic_impl_self_where | 2544 | 2392 |
5.9748427672956
should_pass/language/chained_if_let | 400 | 400 | 0
should_pass/language/test_multiple_attributes | 24 | 24 | 0
should_pass/language/generic_type_inference | 4024 | 3408 |
15.3081510934394
should_pass/language/blanket_trait | 272 | 272 | 0
should_pass/language/retd_zero_len_array | 176 | 176 | 0
should_pass/language/asm_expr_basic | 496 | 416 | 16.1290322580645
should_pass/language/associated_const_impl_local_same_name | 296 | 296 |
0
should_pass/language/unit_type_variants | 624 | 624 | 0
should_pass/language/generic_struct | 288 | 288 | 0
should_pass/language/binary_and_hex_literals | 272 | 272 | 0
should_pass/language/trait_method_qualified | 488 | 272 |
44.2622950819672
should_pass/language/ops | 6072 | 376 | 93.8076416337286
should_pass/language/generic_result_method | 720 | 656 |
8.88888888888889
should_pass/language/tuple_field_reassignment | 488 | 488 | 0
should_pass/language/associated_const_impl_self | 296 | 296 | 0
should_pass/language/predicate_while | 80 | 80 | 0
should_pass/language/retd_small_array | 384 | 384 | 0
should_pass/language/insert_element_reg_reuse | 3336 | 2464 |
26.1390887290168
should_pass/language/args_on_stack | 1656 | 1600 | 3.38164251207729
should_pass/language/where_clause_methods | 2264 | 2104 |
7.06713780918728
should_pass/language/tuple_trait | 368 | 368 | 0
should_pass/language/ref_mutable_fn_args_struct_assign | 280 | 280 | 0
should_pass/language/for_loops | 5104 | 4456 | 12.6959247648903
should_pass/language/zero_field_types | 288 | 288 | 0
should_pass/language/method_on_empty_struct | 272 | 272 | 0
should_pass/language/largeint_sroa | 776 | 776 | 0
should_pass/language/nested_while_and_if | 400 | 400 | 0
should_pass/language/generic_functions | 272 | 272 | 0
should_pass/language/configurable_consts | 15128 | 13448 |
11.1052353252248
should_pass/language/associated_const_trait | 296 | 296 | 0
should_pass/language/eq_intrinsic | 816 | 288 | 64.7058823529412
should_pass/language/match_expressions_unreachable_middle_arm | 3376 |
3376 | 0
should_pass/language/use_full_path_names | 296 | 296 | 0
should_pass/language/associated_const_abi_default | 296 | 296 | 0
should_pass/language/struct_field_reassignment | 272 | 272 | 0
should_pass/language/builtin_type_method_call | 288 | 288 | 0
should_pass/language/far_jumps/single_blob | 1048896 | 1048896 | 0
should_pass/language/far_jumps/many_blobs | 11640520 | 11640520 | 0
should_pass/language/gtf_intrinsic | 696 | 624 | 10.3448275862069
should_pass/language/diverging_exprs | 1944 | 1104 | 43.2098765432099
should_pass/language/mut_ref_empty_type | 880 | 712 | 19.0909090909091
should_pass/language/nested_struct_destructuring | 272 | 272 | 0
should_pass/language/trait_nested | 832 | 832 | 0
should_pass/language/many_stack_variables | 936 | 936 | 0
should_pass/language/abort_control_flow_good | 48 | 48 | 0
should_pass/language/test_attribute | 24 | 24 | 0
should_pass/language/use_absolute_path | 272 | 272 | 0
should_pass/language/import_with_different_callpaths | 2856 | 2696 |
5.60224089635854
should_pass/language/raw_ptr/vec_ret | 1072 | 1072 | 0
should_pass/language/raw_ptr/raw_ptr_ret ... |   |   | #DIV/0!
should_pass/language/where_clause_structs | 608 | 536 | 11.8421052631579
should_pass/language/aliased_imports | 328 | 328 | 0
should_pass/language/prelude_access | 176 | 176 | 0
should_pass/language/match_expressions_nested | 1912 | 1744 |
8.78661087866109
should_pass/language/b256_bitwise_ops | 6320 | 6800 | -7.59493670886076
should_pass/language/empty_method_initializer | 936 | 936 | 0
should_pass/language/main_args/main_args_ref | 296 | 296 | 0
should_pass/language/main_args/main_args_various_types | 2424 | 2352 |
2.97029702970297
should_pass/language/main_args/main_args_empty | 288 | 288 | 0
should_pass/language/main_args/main_args_two_u64 | 416 | 416 | 0
should_pass/language/main_args/main_args_generics | 968 | 968 | 0
should_pass/language/main_args/main_args_one_u64 | 288 | 288 | 0
should_pass/language/main_args/main_args_ref_ref | 528 | 464 |
12.1212121212121
should_pass/language/main_args/main_args_ref_copy | 432 | 432 | 0
should_pass/language/enum_padding | 1560 | 1560 | 0
should_pass/language/associated_const_abi | 296 | 296 | 0
should_pass/language/local_impl_for_ord | 272 | 272 | 0
should_pass/language/associated_const_trait_default | 304 | 304 | 0
should_pass/language/enum_init_fn_call | 616 | 544 | 11.6883116883117
should_pass/language/diagnose_unknown_annotations | 1480 | 1480 | 0
should_pass/language/import_method_from_other_file | 720 | 656 |
8.88888888888889
should_pass/language/match_expressions_or | 10424 | 9528 |
8.59554873369148
should_pass/language/struct_destructuring | 400 | 400 | 0
should_pass/language/import_star_name_clash | 2656 | 2544 |
4.21686746987952
should_pass/language/mutable_arrays_multiple_nested | 272 | 272 | 0
should_pass/language/logging | 3480 | 3344 | 3.90804597701149
should_pass/language/is_reference_type | 800 | 272 | 66
should_pass/language/non_literal_const_decl | 288 | 288 | 0
should_pass/language/array_basics | 800 | 800 | 0
should_pass/language/generic_where_in_impl_self | 464 | 464 | 0
should_pass/language/supertraits_with_trait_methods | 352 | 352 | 0
should_pass/language/tuple_in_struct | 792 | 680 | 14.1414141414141
should_pass/language/impl_self_method | 304 | 304 | 0
should_pass/language/match_expressions_rest | 1888 | 1768 |
6.35593220338983
should_pass/language/tuple_types | 304 | 304 | 0
should_pass/language/impl_self_method_order | 304 | 304 | 0
should_pass/language/enum_if_let | 808 | 728 | 9.9009900990099
should_pass/language/match_expressions | 1120 | 872 | 22.1428571428571
should_pass/language/basic_predicate | 48 | 48 | 0
should_pass/language/new_allocator_test | 960 | 824 | 14.1666666666667
should_pass/language/op_precedence | 264 | 264 | 0
should_pass/language/enum_if_let_large_type | 672 | 672 | 0
should_pass/language/is_prime | 1280 | 1168 | 8.75
should_pass/language/method_unambiguous | 576 | 512 | 11.1111111111111
should_pass/language/match_expressions_structs | 392 | 392 | 0
should_pass/language/match_expressions_with_self | 480 | 416 |
13.3333333333333
should_pass/language/ref_mutable_fn_args_call | 296 | 296 | 0
should_pass/language/array_generics | 352 | 352 | 0
should_pass/language/smo | 1880 | 1880 | 0
should_pass/language/typeinfo_custom_callpath2 | 224 | 224 | 0
should_pass/language/where_clause_generic_traits | 1144 | 872 |
23.7762237762238
should_pass/language/mutable_arrays_enum | 344 | 344 | 0
should_pass/language/ref_mutable_fn_args_bool | 296 | 296 | 0
should_pass/language/supertraits | 8168 | 7224 | 11.5572967678746
should_pass/language/const_inits | 2592 | 1832 | 29.320987654321
should_pass/language/tuple_access | 424 | 424 | 0
should_pass/language/trait_method_generic_qualified | 392 | 392 | 0
should_pass/language/associated_type_parameter | 296 | 296 | 0
should_pass/language/tuple_single_element | 320 | 320 | 0
should_pass/language/bool_and_or | 328 | 328 | 0
should_pass/language/associated_type_fully_qualified | 1288 | 552 |
57.1428571428571
should_pass/language/associated_type_container | 2064 | 1872 |
9.30232558139535
should_pass/language/contract_caller_dynamic_address | 1760 | 1760 | 0
should_pass/language/module_dep_self | 24 | 24 | 0
should_pass/language/name_resolution_after_monomorphization | 320 | 320
| 0
should_pass/language/associated_type_container_in_library | 2064 | 1872
| 9.30232558139535
should_pass/language/type_alias | 3920 | 3768 | 3.87755102040816
should_pass/language/mutable_arrays_swap | 288 | 288 | 0
should_pass/language/break_and_continue_block_ret | 40 | 40 | 0
should_pass/language/main_returns_unit | 176 | 176 | 0
should_pass/language/unary_not_basic_2 | 272 | 272 | 0
should_pass/language/mutable_and_initd | 376 | 376 | 0
should_pass/language/method_type_args | 176 | 176 | 0
should_pass/language/raw_identifiers | 400 | 400 | 0
should_pass/language/mega_example | 10624 | 9712 | 8.58433734939759
should_pass/language/match_expressions_constants | 744 | 424 |
43.010752688172
should_pass/language/generic_structs | 568 | 568 | 0
should_pass/language/predicate_while_dep | 80 | 80 | 0
should_pass/language/unary_not_basic | 272 | 272 | 0
should_pass/language/b256_ops | 4312 | 3792 | 12.0593692022263
should_pass/language/const_decl_with_call_path | 528 | 488 |
7.57575757575758
should_pass/language/generic_where_in_impl_self2 | 464 | 464 | 0
should_pass/language/const_decl_literal | 288 | 288 | 0
should_pass/language/reassignment_operators | 496 | 272 |
45.1612903225806
should_pass/language/attributes_warnings | 176 | 176 | 0
should_pass/language/mutable_arrays | 288 | 288 | 0
should_pass/language/match_expressions_unreachable_catch_all_last_arm |
2184 | 2184 | 0
should_pass/language/memcpy | 424 | 424 | 0
should_pass/language/deprecated | 24 | 24 | 0
should_pass/language/ret_string_in_struct | 344 | 344 | 0
should_pass/language/enum_destructuring | 344 | 344 | 0
should_pass/language/associated_type_and_associated_const | 296 | 296 |
0
should_pass/language/associated_type_method | 296 | 296 | 0
should_pass/language/implicit_casting | 288 | 288 | 0
should_pass/language/where_clause_enums | 768 | 696 | 9.375
should_pass/language/valid_impurity | 1024 | 960 | 6.25
should_pass/language/contract_caller_as_ret | 960 | 960 | 0
should_pass/language/associated_type_ascription | 296 | 296 | 0
should_pass/language/match_expressions_inside_generic_functions | 816 |
488 | 40.1960784313726
should_pass/language/str_slice | 360 | 360 | 0
should_pass/language/match_expressions_explicit_rets | 272 | 272 | 0
should_pass/language/binop_intrinsics | 1344 | 288 | 78.5714285714286
should_pass/language/match_expressions_mismatched | 344 | 344 | 0
should_pass/language/funcs_with_generic_types | 272 | 272 | 0
should_pass/language/trait_import_with_star | 184 | 184 | 0
should_pass/language/match_expressions_unreachable_catch_all_middle_arm
| 1840 | 1832 | 0.434782608695652
should_pass/language/if_let_no_side_effects | 496 | 432 |
12.9032258064516
should_pass/language/b256_bad_jumps | 272 | 272 | 0
should_pass/language/bitwise_not | 440 | 272 | 38.1818181818182
should_pass/language/dummy_method_issue | 448 | 448 | 0
should_pass/language/prelude_access2 | 176 | 176 | 0
should_pass/language/enum_in_fn_decl | 368 | 368 | 0
should_pass/language/enum_type_inference | 288 | 288 | 0
should_pass/language/size_of | 496 | 272 | 45.1612903225806
should_pass/language/associated_const_impl_self_order | 296 | 296 | 0
should_pass/language/const_decl_and_use_in_library | 288 | 288 | 0
should_pass/language/typeinfo_custom_callpath | 224 | 224 | 0
should_pass/language/struct_init_reorder | 280 | 280 | 0
should_pass/language/tuple_desugaring | 360 | 360 | 0
should_pass/language/match_expressions_simple | 432 | 400 |
7.40740740740741
should_pass/language/inline_if_expr_const | 176 | 176 | 0
should_pass/language/associated_const_impl_multiple | 296 | 296 | 0
should_pass/language/enum_variant_imports | 472 | 392 | 16.9491525423729
should_pass/language/if_elseif_enum | 720 | 720 | 0
should_pass/language/where_clause_impls | 736 | 560 | 23.9130434782609
should_pass/language/generic_tuple_trait | 912 | 808 | 11.4035087719298
should_pass/language/mutable_arrays_nested | 272 | 272 | 0
should_pass/language/generic_traits | 1488 | 1416 | 4.83870967741936
should_pass/language/associated_const_impl | 296 | 296 | 0
should_pass/language/modulo_uint_test | 536 | 272 | 49.2537313432836
should_pass/language/implicit_return | 288 | 288 | 0
should_pass/language/fqp_in_lib | 296 | 296 | 0
should_pass/language/retd_b256 | 360 | 360 | 0
should_pass/language/generic_transpose | 928 | 864 | 6.89655172413793
should_pass/language/complex_cfg | 912 | 912 | 0
should_pass/language/struct_field_access | 280 | 280 | 0
should_pass/language/redundant_return | 272 | 272 | 0
should_pass/language/asm_without_return | 184 | 184 | 0
should_pass/language/associated_const_abi_multiple | 296 | 296 | 0
should_pass/language/while_loops | 624 | 552 | 11.5384615384615
should_pass/language/same_const_name | 848 | 248 | 70.7547169811321
should_pass/language/self_impl_reassignment | 1040 | 960 |
7.69230769230769
should_pass/language/reassignment_rhs_lhs_evaluation_order | 1240 | 872
| 29.6774193548387
should_pass/language/associated_const_trait_const | 272 | 272 | 0
should_pass/language/match_expressions_enums | 3728 | 3488 |
6.43776824034335
should_pass/language/smo_opcode | 352 | 352 | 0
should_pass/language/import_trailing_comma | 280 | 280 | 0
should_pass/language/enum_instantiation | 4368 | 3744 | 14.2857142857143
should_pass/language/trait_method_ascription_disambiguate | 392 | 392 |
0
should_pass/language/eq_and_neq | 2648 | 2008 | 24.1691842900302
should_pass/language/tuple_indexing | 296 | 296 | 0
should_pass/language/ref_mutable_fn_args_struct | 288 | 288 | 0
should_pass/language/revert_in_first_if_branch | 48 | 48 | 0
should_pass/language/ref_mutable_arrays | 288 | 288 | 0
should_pass/language/nested_structs | 1416 | 1240 | 12.4293785310734
should_pass/language/typeinfo_custom_callpath_with_import | 240 | 240 |
0
should_pass/language/multi_impl_self | 288 | 288 | 0
should_pass/language/generic_struct_instantiation | 272 | 272 | 0
should_pass/language/generic_trait_constraints | 1264 | 1064 |
15.8227848101266
should_pass/language/primitive_type_argument | 288 | 288 | 0
should_pass/language/fix_opcode_bug | 288 | 288 | 0
should_pass/language/arg_demotion_inline | 1152 | 1152 | 0
should_pass/language/ret_small_string | 304 | 304 | 0
should_pass/language/doc_comments | 952 | 952 | 0
should_pass/language/match_expressions_empty_enums | 288 | 288 | 0
should_pass/language/const_decl_in_library | 312 | 304 |
2.56410256410256
should_pass/language/generics_in_contract | 4688 | 3608 |
23.037542662116
should_pass/language/if_implicit_unit | 176 | 176 | 0
should_pass/language/impure_ifs | 1312 | 1080 | 17.6829268292683
should_pass/language/break_and_continue | 960 | 888 | 7.5
should_pass/language/ref_mutable_fn_args_u32 | 320 | 320 | 0
should_pass/storage_into | 2256 | 1704 | 24.468085106383
should_pass/resolve_local_items_that_shadow_imports | 320 | 320 | 0
should_pass/break_in_strange_positions | 1184 | 768 | 35.1351351351351
should_pass/multiple_supertraits_for_abis | 2048 | 1864 | 8.984375
should_pass/continue_in_strange_positions | 1472 | 1344 |
8.69565217391304
should_pass/supertraits_for_abis_diamond | 2072 | 1888 |
8.88030888030888
should_pass/superabi_diamond | 2064 | 1880 | 8.91472868217054
should_pass/supertraits_via_self | 160 | 160 | 0
should_pass/supertraits_for_abis | 1800 | 1616 | 10.2222222222222
should_pass/dca/alias_type_ascription | 176 | 176 | 0
should_pass/dca/alias_type_ascription_generic | 176 | 176 | 0
should_pass/dca/constant_decl_expr | 288 | 288 | 0
should_pass/dca/impl_unused_fn | 296 | 296 | 0
should_pass/dca/log_stdlib | 752 | 752 | 0
should_pass/dca/unused_trait | 176 | 176 | 0
should_pass/dca/impl_self_alias | 176 | 176 | 0
should_pass/dca/impl_trait_single | 272 | 272 | 0
should_pass/dca/trait_method | 176 | 176 | 0
should_pass/dca/unused_free_fn | 176 | 176 | 0
should_pass/dca/unused_variable_in_free_fn | 176 | 176 | 0
should_pass/dca/revert | 32 | 32 | 0
should_pass/dca/unused_variable | 176 | 176 | 0
should_pass/dca/impl_trait_multiple | 272 | 272 | 0
should_pass/dca/contract/superabi_contract_calls | 2648 | 1872 |
29.3051359516616
should_pass/dca/contract/unused_struct_field | 1216 | 1216 | 0
should_pass/dca/contract/unused_struct_field_enum | 1472 | 1472 | 0
should_pass/dca/contract/abi_fn_params | 1712 | 1440 | 15.8878504672897
should_pass/dca/contract/unused_struct_field_array | 1296 | 1296 | 0
should_pass/dca/contract/unused_struct_field_tuple | 1216 | 1216 | 0
should_pass/dca/unused_struct | 176 | 176 | 0
should_pass/dca/func_param | 176 | 176 | 0
should_pass/dca/alias_unused | 176 | 176 | 0
should_pass/dca/multiple_fns_same_name | 176 | 176 | 0
should_pass/dca/allow_dead_code | 176 | 176 | 0
should_pass/dca/trait_method_neq | 368 | 368 | 0
should_pass/dca/all_paths_return | 272 | 272 | 0
should_pass/dca/unused_fields | 272 | 272 | 0
should_pass/dca/impl_self_alias2 | 176 | 176 | 0
should_pass/dca/alias_lib | 232 | 232 | 0
should_pass/dca/multiple_enums_same_name | 176 | 176 | 0
should_pass/dca/generic_fn_trait_constraint | 176 | 176 | 0
should_pass/dca/library/fn_params_impl | 24 | 24 | 0
should_pass/dca/library/fn_params_free | 24 | 24 | 0
should_pass/dca/library/unused_priv_free_fn | 24 | 24 | 0
should_pass/dca/library/unused_pub_free_fn | 24 | 24 | 0
should_pass/dca/library/fn_params_trait | 24 | 24 | 0
should_pass/dca/reassignment_lhs | 200 | 200 | 0
should_pass/dca/constant_while | 176 | 176 | 0
should_pass/dca/constant_struct | 288 | 288 | 0
should_pass/dca/unused_enum | 176 | 176 | 0
should_pass/dca/impl_self | 176 | 176 | 0
should_pass/dca/log_intrinsic | 752 | 752 | 0
should_pass/dca/struct_field_no_warning | 296 | 296 | 0
should_pass/dca/trait_method_lib | 24 | 24 | 0
should_pass/supertraits_for_abis_ownable | 9968 | 8184 |
17.8972712680578
should_pass/return_into | 1352 | 880 | 34.9112426035503
should_pass/unit_tests/script_multi_test | 728 | 728 | 0
should_pass/unit_tests/nested_libs | 1248 | 1248 | 0
should_pass/unit_tests/contract_multi_test | 4480 | 4480 | 0
should_pass/unit_tests/script-contract-calls | 1424 | 1424 | 0
should_pass/unit_tests/lib_single_test | 112 | 112 | 0
should_pass/unit_tests/aggr_indexing | 7728 | 7728 | 0
should_pass/unit_tests/log_decode | 1048 | 1048 | 0
should_pass/unit_tests/workspace_test | 728 | 728 | 0
should_pass/unit_tests/predicate_with_nested_libs | 608 | 608 | 0
should_pass/unit_tests/script_with_nested_libs | 1376 | 1376 | 0
should_pass/unit_tests/should_revert | 160 | 160 | 0
should_pass/unit_tests/contract_with_nested_libs | 2480 | 2480 | 0
should_pass/unit_tests/stack_indexing_overflow | 5096 | 5096 | 0
should_pass/unit_tests/lib_multi_test | 1080 | 1080 | 0
should_pass/unit_tests/contract-multi-contract-calls | 1424 | 1424 | 0
should_pass/unit_tests/predicate_multi_test | 264 | 264 | 0
should_pass/unit_tests/regalloc_spill | 672 | 672 | 0
should_pass/blanket_impl | 288 | 288 | 0
should_pass/non_payable_implicit_zero_coins | 1864 | 1864 | 0
should_pass/test_abis/abi_impl_methods_in_json_abi | 1576 | 1392 |
11.6751269035533
should_pass/test_abis/abi_impl_methods_callable | 2856 | 2856 | 0
should_pass/static_analysis/cei_pattern_violation_in_struct | 4216 |
2816 | 33.2068311195446
should_pass/static_analysis/cei_pattern_violation | 3688 | 2520 |
31.6702819956616
should_pass/static_analysis/cei_pattern_violation_in_match_statement-1 |
4696 | 3168 | 32.5383304940375
should_pass/static_analysis/cei_pattern_violation_in_if_statement-2 |
4216 | 2816 | 33.2068311195446
should_pass/static_analysis/cei_pattern_violation_in_while_loop-1 | 4048
| 2648 | 34.5849802371541
should_pass/static_analysis/cei_pattern_violation_in_while_loop-3 | 4048
| 2648 | 34.5849802371541
should_pass/static_analysis/cei_pattern_violation_storage_var_read |
4480 | 3000 | 33.0357142857143

should_pass/static_analysis/cei_pattern_violation_in_codeblocks_other_than_in_functions
| 4216 | 2816 | 33.2068311195446
should_pass/static_analysis/cei_pattern_violation_in_func_app-3 | 4216 |
2816 | 33.2068311195446
should_pass/static_analysis/cei_pattern_violation_in_func_app-1 | 4216 |
2816 | 33.2068311195446
should_pass/static_analysis/storage_annotations_unused_write | 944 | 944
| 0
should_pass/static_analysis/cei_pattern_violation_in_asm_block_smo |
3000 | 2168 | 27.7333333333333
should_pass/static_analysis/cei_pattern_violation_in_asm_block | 3024 |
2192 | 27.5132275132275
should_pass/static_analysis/cei_pattern_violation_in_intrinsic_call |
4216 | 2816 | 33.2068311195446
should_pass/static_analysis/storage_annotations_unused_read | 944 | 944
| 0
should_pass/static_analysis/cei_pattern_violation_storage_map_and_vec |
11136 | 7760 | 30.316091954023
should_pass/static_analysis/cei_pattern_violation_in_asm_block_tro |
4544 | 3328 | 26.7605633802817
should_pass/static_analysis/cei_pattern_violation_in_while_loop-2 | 4048
| 2648 | 34.5849802371541
should_pass/static_analysis/cei_pattern_violation_smo_intrinsic | 3176 |
2256 | 28.9672544080605
should_pass/static_analysis/storage_annotations_unused_read_and_write |
944 | 944 | 0

should_pass/static_analysis/cei_pattern_violation_in_standalone_function
| 3752 | 2520 | 32.8358208955224
should_pass/static_analysis/cei_pattern_violation_in_asm_block_read |
3272 | 2352 | 28.1173594132029
should_pass/static_analysis/cei_pattern_violation_in_while_loop-4 | 4048
| 2648 | 34.5849802371541
should_pass/static_analysis/cei_pattern_violation_in_asm_block_tr | 4544
| 3328 | 26.7605633802817
should_pass/static_analysis/cei_pattern_violation_in_tuple | 4216 | 2816
| 33.2068311195446
should_pass/static_analysis/cei_pattern_violation_in_asm_block_bal |
2976 | 2152 | 27.6881720430107
should_pass/static_analysis/cei_pattern_violation_more_complex_logic |
21008 | 17000 | 19.0784463061691
should_pass/static_analysis/cei_pattern_violation_storage_struct_read |
4280 | 2760 | 35.5140186915888
should_pass/static_analysis/cei_pattern_violation_storage_var_update |
3952 | 2672 | 32.3886639676113
should_pass/static_analysis/cei_pattern_violation_in_if_statement-1 |
4240 | 2840 | 33.0188679245283
should_pass/static_analysis/cei_pattern_violation_in_func_app-2 | 4216 |
2816 | 33.2068311195446
should_pass/superabi | 1576 | 1392 | 11.6751269035533
should_pass/non_payable_zero_coins_let_binding | 1864 | 1864 | 0
should_pass/superabi_diamond_impl | 2064 | 1880 | 8.91472868217054

</details>
  • Loading branch information
vaivaswatha authored May 29, 2024
1 parent f342f52 commit 94b2713
Show file tree
Hide file tree
Showing 11 changed files with 34 additions and 26 deletions.
5 changes: 5 additions & 0 deletions sway-ir/src/optimize/constants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,12 @@ fn combine_cbr(context: &mut Context, function: &Function) -> Result<bool, IrErr
..
},
)| {
// `no_more_dest` will no longer have from_block as a predecessor.
no_more_dest.remove_pred(context, &from_block);
// Although our cbr already branched to `dest`, in case
// `no_more_dest` and `dest` are the same, we'll need to re-add
// `from_block` as a predecessor for `dest`.
dest.block.add_pred(context, &from_block);
cbr.replace(
context,
ValueDatum::Instruction(Instruction {
Expand Down
3 changes: 3 additions & 0 deletions sway-ir/src/pass_manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,9 @@ pub fn create_o1_pass_group() -> PassGroup {
o1.append_pass(MEM2REG_NAME);
o1.append_pass(FN_DEDUP_RELEASE_PROFILE_NAME);
o1.append_pass(FN_INLINE_NAME);
o1.append_pass(SIMPLIFY_CFG_NAME);
o1.append_pass(FN_DCE_NAME);
o1.append_pass(FN_INLINE_NAME);
o1.append_pass(CONST_FOLDING_NAME);
o1.append_pass(SIMPLIFY_CFG_NAME);
o1.append_pass(CONST_FOLDING_NAME);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"typeArguments": null
},
"name": "C0",
"offset": 14264
"offset": 12584
},
{
"configurableType": {
Expand All @@ -16,7 +16,7 @@
"typeArguments": null
},
"name": "C1",
"offset": 14288
"offset": 12608
},
{
"configurableType": {
Expand All @@ -25,7 +25,7 @@
"typeArguments": null
},
"name": "C2",
"offset": 14304
"offset": 12624
},
{
"configurableType": {
Expand All @@ -34,7 +34,7 @@
"typeArguments": []
},
"name": "C3",
"offset": 14336
"offset": 12656
},
{
"configurableType": {
Expand All @@ -43,7 +43,7 @@
"typeArguments": []
},
"name": "C4",
"offset": 14352
"offset": 12672
},
{
"configurableType": {
Expand All @@ -52,7 +52,7 @@
"typeArguments": []
},
"name": "C5",
"offset": 14368
"offset": 12688
},
{
"configurableType": {
Expand All @@ -61,7 +61,7 @@
"typeArguments": null
},
"name": "C6",
"offset": 14384
"offset": 12704
},
{
"configurableType": {
Expand All @@ -70,7 +70,7 @@
"typeArguments": null
},
"name": "C7",
"offset": 14400
"offset": 12720
},
{
"configurableType": {
Expand All @@ -79,7 +79,7 @@
"typeArguments": null
},
"name": "C9",
"offset": 14448
"offset": 12768
},
{
"configurableType": {
Expand All @@ -88,7 +88,7 @@
"typeArguments": null
},
"name": "BOOL",
"offset": 14472
"offset": 12792
},
{
"configurableType": {
Expand All @@ -97,7 +97,7 @@
"typeArguments": null
},
"name": "U8",
"offset": 14480
"offset": 12800
},
{
"configurableType": {
Expand All @@ -106,7 +106,7 @@
"typeArguments": null
},
"name": "ANOTHERU8",
"offset": 14496
"offset": 12816
},
{
"configurableType": {
Expand All @@ -115,7 +115,7 @@
"typeArguments": null
},
"name": "U16",
"offset": 14504
"offset": 12824
},
{
"configurableType": {
Expand All @@ -124,7 +124,7 @@
"typeArguments": null
},
"name": "U32",
"offset": 14512
"offset": 12832
},
{
"configurableType": {
Expand All @@ -133,7 +133,7 @@
"typeArguments": null
},
"name": "U64",
"offset": 14528
"offset": 12848
},
{
"configurableType": {
Expand All @@ -142,7 +142,7 @@
"typeArguments": null
},
"name": "U256",
"offset": 14544
"offset": 12864
},
{
"configurableType": {
Expand All @@ -151,7 +151,7 @@
"typeArguments": null
},
"name": "ARRAY_U8",
"offset": 14576
"offset": 12896
},
{
"configurableType": {
Expand All @@ -160,7 +160,7 @@
"typeArguments": null
},
"name": "ARRAY_U32",
"offset": 14608
"offset": 12928
}
],
"encoding": "1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"typeArguments": null
},
"name": "SOME_U256",
"offset": 1000
"offset": 696
}
],
"encoding": "1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use std::hash::*;
#[cfg(experimental_new_encoding = false)]
const CONTRACT_ID = 0x14ed3cd06c2947248f69d54bfa681fe40d26267be84df7e19e253622b7921bbe;
#[cfg(experimental_new_encoding = true)]
const CONTRACT_ID = 0x6f17aab95114cec8943fcc9241f5a4e5d2a64e6b81e8e58458e9ec5ddf96cc33;
const CONTRACT_ID = 0x6486c615579f7d36e9aae82a8abdcb65f1f774e025958cc77e5d3c8998b9d51f;

fn main() -> u64 {
let addr = abi(TestContract, CONTRACT_ID);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use test_fuel_coin_abi::*;
#[cfg(experimental_new_encoding = false)]
const FUEL_COIN_CONTRACT_ID = 0x4c7b43ef5a097d7cfb87600a4234e33311eeeeb8081e5ea7bb6d9a1f8555c9c4;
#[cfg(experimental_new_encoding = true)]
const FUEL_COIN_CONTRACT_ID = 0x9084825714984f620dcc0c8fcf73f4176898b762b0149c8f6aced529f2ed18cb;
const FUEL_COIN_CONTRACT_ID = 0x9c9f2f9d8e599a8a0261f5683973d5377d23835e5704d3d051a9c275a117b1a7;

#[cfg(experimental_new_encoding = false)]
const BALANCE_CONTRACT_ID = 0x3120fdd1b99c0c611308aff43a99746cc2c661c69c22aa56331d5f3ce5534ee9;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use basic_storage_abi::{BasicStorage, Quad};
#[cfg(experimental_new_encoding = false)]
const CONTRACT_ID = 0x044ab65bcabeebb73c88d8625ce392224c613cb1dae21ebedaa36bf6db1f5f4e;
#[cfg(experimental_new_encoding = true)]
const CONTRACT_ID = 0x4604eeef819dcf73b763464198bea2b7f338d275dca50c928b4b4a9c4b013058;
const CONTRACT_ID = 0x2789fd0c2deeedc2cd516778040b43a35c5a10268f3f5ba316e1a73ef5169796;

fn main() -> u64 {
let addr = abi(BasicStorage, CONTRACT_ID);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use dynamic_contract_call::*;
#[cfg(experimental_new_encoding = false)]
const CONTRACT_ID = 0x080ca4b6a4661d3cc2138f733cbe54095ce8b910eee73d913c1f43ecad6bf0d2;
#[cfg(experimental_new_encoding = true)]
const CONTRACT_ID = 0x227e9f3c58984166b7036d7d661cad9630ef49d169965e0e7d2f4893c736c6d8;
const CONTRACT_ID = 0xa011977417cfbab9f2fa63f128aa031c41c5f9627bbc296f33f5aab804d7c6ee;

fn main() -> bool {
let the_abi = abi(Incrementor, CONTRACT_ID);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use storage_enum_abi::*;
#[cfg(experimental_new_encoding = false)]
const CONTRACT_ID = 0x0d2d9546e833c166b64a340f5694fa01ca6bb53c3ec681d6c1ade1b9c0a2bf46;
#[cfg(experimental_new_encoding = true)]
const CONTRACT_ID = 0xfbb70e4e0d6589eb48bba9559ad97c94917347553686a25531c27c0974fd0d2a;
const CONTRACT_ID = 0x92ee0b5ed85ac45c62ff340dbf75114329721ce101cb3dca1a26abcff0694826;

fn main() -> u64 {
let caller = abi(StorageEnum, CONTRACT_ID);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use context_testing_abi::*;
#[cfg(experimental_new_encoding = false)]
const CONTRACT_ID = 0xc2ec2a4a1b20475700e6793c7f20ad8082294894242b17cf08b5fd7c0d3968ad;
#[cfg(experimental_new_encoding = true)]
const CONTRACT_ID = 0x6e3044894f0106b2b9e2956736fbc58a406d6df953d9690573820153abc71f13;
const CONTRACT_ID = 0x7f9c28be2552ed556bd2120cd47c9e5665b35c2494267bcf03ffa66c96fcb7d7;

fn main() -> bool {
let gas: u64 = u64::max();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use std::hash::*;
#[cfg(experimental_new_encoding = false)]
const CONTRACT_ID = 0x88732a14508defea37a44d0b0ae9af5c776253215180a1c3288f8d504ebb84db;
#[cfg(experimental_new_encoding = true)]
const CONTRACT_ID = 0x86483e892d6dc06022ee5f4ce4f1a74bf02eaf41585618866d094d6b4a58186c;
const CONTRACT_ID = 0x69a1c9d2ddba33626420fe322b230deb9b4f519b73ff787aab0a824a2290d1ee;

fn main() -> bool {
let caller = abi(StorageAccess, CONTRACT_ID);
Expand Down

0 comments on commit 94b2713

Please sign in to comment.