Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tune the inliner for codesize #6047

Closed
vaivaswatha opened this issue May 22, 2024 · 0 comments · Fixed by #6072
Closed

Tune the inliner for codesize #6047

vaivaswatha opened this issue May 22, 2024 · 0 comments · Fixed by #6072
Assignees
Labels
compiler: ir IRgen and sway-ir including optimization passes compiler: optimization IR Optimization Passes

Comments

@vaivaswatha
Copy link
Contributor

After we moved the function deduplication pass to be run prior to inlining, there were some code size regressions. See if we can recover from those by tuning the inliner.

Reference: #6024

@vaivaswatha vaivaswatha self-assigned this May 22, 2024
@vaivaswatha vaivaswatha added compiler: ir IRgen and sway-ir including optimization passes compiler: optimization IR Optimization Passes labels May 22, 2024
IGI-111 pushed a commit that referenced this issue May 29, 2024
## 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler: ir IRgen and sway-ir including optimization passes compiler: optimization IR Optimization Passes
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant