Skip to content
New issue

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

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

Already on GitHub? # to your account

Common sub-expression elimination pass #6413

Merged
merged 24 commits into from
Sep 23, 2024
Merged

Common sub-expression elimination pass #6413

merged 24 commits into from
Sep 23, 2024

Conversation

vaivaswatha
Copy link
Contributor

Description

This PR introduces a value-numbering based CSE pass. A reference to the algorithm used is mentioned as a comment in cse.rs.

@vaivaswatha vaivaswatha self-assigned this Aug 14, 2024
@vaivaswatha
Copy link
Contributor Author

The effect of this optimization is quite minimal

%reduction after CSE
test before after %reduction
should_pass/return_in_strange_positions 408 400 1.96078431372549
should_pass/payable_non_zero_coins 2088 2072 0.766283524904214
should_pass/superabi_contract_calls 4448 4448 0
should_pass/superabi_supertrait_same_methods 3432 3432 0
should_pass/stdlib/vec 113448 113592 -0.126930399830759
should_pass/stdlib/alloc_test 928 896 3.44827586206897
should_pass/stdlib/vec_swap 25424 25504 -0.314663310258024
should_pass/stdlib/intrinsics 392 392 0
should_pass/stdlib/ge_test 672 664 1.19047619047619
should_pass/stdlib/assert_ne_revert 816 808 0.980392156862745
should_pass/stdlib/assert_eq 6720 6704 0.238095238095238
should_pass/stdlib/u128_log_test 4760 4768 -0.168067226890756
should_pass/stdlib/u128_root_test 4568 4568 0
should_pass/stdlib/raw_ptr 4912 4912 0
should_pass/stdlib/identity_eq 2600 2600 0
should_pass/stdlib/eq_custom_type 800 800 0
should_pass/stdlib/contract_id_type 744 744 0
should_pass/stdlib/option_eq 12328 12312 0.129785853341986
should_pass/stdlib/option 24592 24568 0.0975927130774235
should_pass/stdlib/eq_generic 256 256 0
should_pass/stdlib/u128_div_test 2864 2872 -0.279329608938547
should_pass/stdlib/generic_empty_struct_with_constraint 256 256 0
should_pass/stdlib/u128_test 6672 6672 0
should_pass/stdlib/assert_test 392 392 0
should_pass/stdlib/result 9176 9152 0.2615518744551
should_pass/stdlib/contract_id_test 752 744 1.06382978723404
should_pass/stdlib/assert_ne 6320 6312 0.126582278481013
should_pass/stdlib/address_test 4464 4456 0.17921146953405
should_pass/stdlib/storage_vec_insert 9232 9232 0
should_pass/stdlib/block_height 440 432 1.81818181818182
should_pass/stdlib/u128_mul_test 1560 1568 -0.512820512820513
should_pass/stdlib/if_type_revert 376 368 2.12765957446808
should_pass/stdlib/b512_test 3736 3736 0
should_pass/stdlib/vec_byte_remove 2032 2032 0
should_pass/stdlib/sha256 2400 2400 0
should_pass/stdlib/assert_eq_revert 816 808 0.980392156862745
should_pass/stdlib/chess 1688 1680 0.4739336492891
should_pass/stdlib/require 1328 1312 1.20481927710843
should_pass/stdlib/b512_struct_alignment 896 888 0.892857142857143
should_pass/stdlib/iterator 2792 2792 0
should_pass/stdlib/raw_slice 1232 1232 0
should_pass/test_contracts/nested_struct_args_contract 1616 1608 0.495049504950495
should_pass/test_contracts/abi_with_generic_types 5264 5248 0.303951367781155
should_pass/test_contracts/basic_storage 37552 37536 0.0426075841499787
should_pass/test_contracts/storage_access_contract 34720 34672 0.138248847926267
should_pass/test_contracts/return_struct 3848 3840 0.207900207900208
should_pass/test_contracts/array_of_structs_contract 4160 4144 0.384615384615385
should_pass/test_contracts/auth_testing_contract 1280 1272 0.625
should_pass/test_contracts/issue_1512_repro 2824 2816 0.28328611898017
should_pass/test_contracts/abi_with_same_name_types 1680 1672 0.476190476190476
should_pass/test_contracts/context_testing_contract 4888 4872 0.327332242225859
should_pass/test_contracts/storage_namespace 35688 35680 0.0224164985429276
should_pass/test_contracts/increment_contract 4208 4200 0.190114068441065
should_pass/test_contracts/multiple_impl 1104 1096 0.72463768115942
should_pass/test_contracts/abi_with_tuples_contract 2816 2808 0.284090909090909
should_pass/test_contracts/contract_with_type_aliases 4832 4808 0.496688741721854
should_pass/test_contracts/test_fuel_coin_contract 3616 3616 0
should_pass/test_contracts/storage_enum_contract 19184 19176 0.0417014178482068
should_pass/test_contracts/balance_test_contract 1280 1272 0.625
should_pass/evm/evm_basic 256 256 0
should_pass/blanket_impl_u16 408 400 1.96078431372549
should_pass/empty_fields_in_storage_struct 30456 30456 0
should_pass/forc/dependency_package_field 400 392 2
should_pass/forc/workspace_building 24 24 0
Bytecode size: 216     #DIV/0!
Bytecode size: 256     #DIV/0!
should_pass/forc/parent_pkg_manifest/contract_a 1272 1272 0
should_pass/forc/dependency_patching 400 392 2
should_pass/forc/contract_dependencies/contract_c 1272 1272 0
should_pass/forc/contract_dependencies/contract_b 1272 1272 0
should_pass/forc/contract_dependencies/contract_a 960 960 0
should_pass/conditional_compilation/run 408 400 1.96078431372549
should_pass/language/where_clause_functions 2048 2032 0.78125
should_pass/language/basic_func_decl 392 392 0
should_pass/language/associated_const_trait_impl_method 424 416 1.88679245283019
should_pass/language/left_to_right_func_args_evaluation 424 424 0
should_pass/language/out_of_order_decl 400 400 0
should_pass/language/where_clause_traits 392 392 0
should_pass/language/references/reassigning_via_references_passed_and_returned_to_and_from_functions 46384 46328 0.120731286650569
should_pass/language/references/reassigning_via_references_in_aggregates 5184 5176 0.154320987654321
should_pass/language/references/referencing_function_parameters 4208 4176 0.760456273764259
should_pass/language/references/referencing_expressions 8080 8024 0.693069306930693
should_pass/language/references/references_and_type_aliases 848 840 0.943396226415094
should_pass/language/references/references_in_asm_blocks 2272 2264 0.352112676056338
should_pass/language/references/mutability_of_references 1024 984 3.90625
should_pass/language/references/dereferencing_operator_dot_on_tuples 149600 149592 0.0053475935828877
should_pass/language/references/passing_and_returning_references_to_and_from_functions 16968 16960 0.0471475719000472
should_pass/language/references/type_unification_of_references 3544 3536 0.225733634311512
should_pass/language/references/dereferencing_control_flow_expressions 1312 1304 0.609756097560976
should_pass/language/references/referencing_parts_of_aggregates 6752 6744 0.118483412322275
should_pass/language/references/dereferencing_operator_index 101392 101384 0.00789016884961338
should_pass/language/references/dereferencing_operator_star 181384 181376 0.0044105323512548
should_pass/language/references/reassigning_via_references_to_values 15048 15040 0.0531632110579479
should_pass/language/references/referencing_references 1216 1208 0.657894736842105
should_pass/language/references/references_in_aggregates 4000 4000 0
should_pass/language/references/referencing_control_flow_expressions 912 904 0.87719298245614
should_pass/language/references/references_and_generics 3896 3944 -1.23203285420945
should_pass/language/references/reassigning_via_references_to_expressions 40432 40296 0.336367233874159
should_pass/language/references/dereferencing_operator_dot_on_structs 149600 149592 0.0053475935828877
should_pass/language/references/impl_reference_types 7928 7752 2.21997981836529
should_pass/language/references/referencing_local_vars_and_values 38944 38936 0.0205423171733772
should_pass/language/integer_type_inference 1624 1624 0
should_pass/language/numeric_constants 2784 2752 1.14942528735632
should_pass/language/mutable_arrays_struct 408 400 1.96078431372549
should_pass/language/same_const_name_lib 24 24 0
should_pass/language/associated_type_iterator 2160 2152 0.37037037037037
should_pass/language/match_expressions_unreachable_last_arm 3160 3160 0
should_pass/language/multi_item_import 392 392 0
should_pass/language/ref_mutable_arrays_inline 408 400 1.96078431372549
should_pass/language/u256/u256_abi 896 888 0.892857142857143
should_pass/language/u256/u256_operators 5792 5792 0
should_pass/language/module_dep 24 24 0
should_pass/language/generic_inside_generic 496 488 1.61290322580645
should_pass/language/associated_const_trait_method 424 416 1.88679245283019
should_pass/language/struct_instantiation 2272 2264 0.352112676056338
should_pass/language/module_dep_multiple 24 24 0
should_pass/language/method_indirect_inference 672 672 0
should_pass/language/where_clause_generic_tuple 408 400 1.96078431372549
should_pass/language/generic_impl_self 2672 2664 0.29940119760479
should_pass/language/retd_struct 1008 984 2.38095238095238
should_pass/language/fallback_only 2000 2000 0
should_pass/language/generic_impl_self_where 2448 2440 0.326797385620915
should_pass/language/chained_if_let 504 496 1.58730158730159
should_pass/language/test_multiple_attributes 24 24 0
should_pass/language/generic_type_inference 3608 3632 -0.665188470066519
should_pass/language/blanket_trait 392 392 0
should_pass/language/retd_zero_len_array 264 264 0
should_pass/language/asm_expr_basic 536 528 1.49253731343284
should_pass/language/associated_const_impl_local_same_name 424 416 1.88679245283019
should_pass/language/unit_type_variants 832 824 0.961538461538462
should_pass/language/generic_struct 408 408 0
should_pass/language/binary_and_hex_literals 392 392 0
should_pass/language/trait_method_qualified 392 392 0
should_pass/language/ops 496 488 1.61290322580645
should_pass/language/duplicated_storage_keys 216 216 0
should_pass/language/type_alias_from_dependency 24 24 0
should_pass/language/generic_result_method 744 736 1.0752688172043
should_pass/language/tuple_field_reassignment 512 504 1.5625
should_pass/language/associated_const_impl_self 424 416 1.88679245283019
should_pass/language/predicate_while 120 120 0
should_pass/language/retd_small_array 544 536 1.47058823529412
should_pass/language/insert_element_reg_reuse 2688 2688 0
should_pass/language/args_on_stack 1984 1976 0.403225806451613
should_pass/language/where_clause_methods 2104 2088 0.760456273764259
should_pass/language/tuple_trait 480 472 1.66666666666667
should_pass/language/ref_mutable_fn_args_struct_assign 408 400 1.96078431372549
should_pass/language/for_loops 4752 4776 -0.505050505050505
should_pass/language/zero_field_types 408 400 1.96078431372549
should_pass/language/method_on_empty_struct 400 392 2
should_pass/language/largeint_sroa 864 864 0
should_pass/language/nested_while_and_if 488 488 0
should_pass/language/generic_functions 392 392 0
should_pass/language/configurable_consts 7752 7752 0
should_pass/language/associated_const_trait 688 688 0
should_pass/language/eq_intrinsic 408 400 1.96078431372549
should_pass/language/match_expressions_unreachable_middle_arm 3560 3560 0
should_pass/language/use_full_path_names 424 416 1.88679245283019
should_pass/language/struct_field_reassignment 400 392 2
should_pass/language/builtin_type_method_call 408 400 1.96078431372549
should_pass/language/far_jumps/single_blob 1049008 1049000 0.000762625261199152
should_pass/language/far_jumps/many_blobs 11640608 11640600 6.87249325808411E-05
should_pass/language/gtf_intrinsic 1120 1112 0.714285714285714
should_pass/language/diverging_exprs 1200 1176 2
should_pass/language/mut_ref_empty_type 832 824 0.961538461538462
should_pass/language/nested_struct_destructuring 400 392 2
should_pass/language/trait_nested 1088 1072 1.47058823529412
should_pass/language/many_stack_variables 1024 1016 0.78125
should_pass/language/abort_control_flow_good 384 376 2.08333333333333
should_pass/language/test_attribute 24 24 0
should_pass/language/use_absolute_path 400 392 2
should_pass/language/import_with_different_callpaths 2816 2832 -0.568181818181818
should_pass/language/raw_ptr/vec_ret 1232 1240 -0.649350649350649
should_pass/language/raw_ptr/raw_ptr_ret ...     #DIV/0!
should_pass/language/where_clause_structs 672 664 1.19047619047619
should_pass/language/aliased_imports 424 416 1.88679245283019
should_pass/language/prelude_access 256 256 0
should_pass/language/slice/slice_script 688 688 0
should_pass/language/slice/slice_intrinsics 7312 7288 0.328227571115974
should_pass/language/slice/slice_contract 4504 4504 0
should_pass/language/match_expressions_nested 1784 1776 0.448430493273543
should_pass/language/b256_bitwise_ops 6880 6880 0
should_pass/language/empty_method_initializer 1136 1128 0.704225352112676
should_pass/language/main_args/main_args_ref 512 504 1.5625
should_pass/language/main_args/main_args_various_types 2720 2680 1.47058823529412
should_pass/language/main_args/main_args_empty 408 400 1.96078431372549
should_pass/language/main_args/main_args_two_u64 592 584 1.35135135135135
should_pass/language/main_args/main_args_generics 1344 1320 1.78571428571429
should_pass/language/main_args/main_args_one_u64 488 480 1.63934426229508
should_pass/language/main_args/main_args_ref_ref 688 680 1.16279069767442
should_pass/language/main_args/main_args_ref_copy 624 616 1.28205128205128
should_pass/language/enum_padding 2072 2048 1.15830115830116
should_pass/language/associated_const_abi 2936 2936 0
should_pass/language/local_impl_for_ord 392 392 0
should_pass/language/associated_const_trait_default 1048 1048 0
should_pass/language/enum_init_fn_call 656 648 1.21951219512195
should_pass/language/diagnose_unknown_annotations 1616 1616 0
should_pass/language/import_method_from_other_file 768 760 1.04166666666667
should_pass/language/match_expressions_or 9264 9256 0.0863557858376511
should_pass/language/struct_destructuring 512 504 1.5625
should_pass/language/import_star_name_clash 2472 2464 0.323624595469256
should_pass/language/mutable_arrays_multiple_nested 400 392 2
should_pass/language/logging 4088 4064 0.587084148727984
should_pass/language/reexport/visibility 1128 1120 0.709219858156028
should_pass/language/reexport/multiple_imports_of_same_reexport 1864 1856 0.429184549356223
should_pass/language/reexport/simple_glob_import 1128 1120 0.709219858156028
should_pass/language/reexport/aliases 1392 1384 0.574712643678161
should_pass/language/reexport/shadowing_in_reexporting_module 1856 1848 0.431034482758621
should_pass/language/reexport/reexport_paths_external_lib 24 24 0
should_pass/language/reexport/reexport_paths 856 848 0.934579439252336
should_pass/language/reexport/simple_item_import 1128 1120 0.709219858156028
should_pass/language/asm_empty_block 24 24 0
should_pass/language/is_reference_type 392 392 0
should_pass/language/non_literal_const_decl 408 400 1.96078431372549
should_pass/language/array_basics 864 864 0
should_pass/language/generic_where_in_impl_self 576 576 0
should_pass/language/supertraits_with_trait_methods 472 472 0
should_pass/language/tuple_in_struct 728 720 1.0989010989011
should_pass/language/impl_self_method 424 416 1.88679245283019
should_pass/language/match_expressions_rest 1808 1800 0.442477876106195
should_pass/language/tuple_types 424 416 1.88679245283019
should_pass/language/impl_self_method_order 424 416 1.88679245283019
should_pass/language/enum_if_let 816 808 0.980392156862745
should_pass/language/basic_predicate 88 88 0
should_pass/language/new_allocator_test 864 856 0.925925925925926
should_pass/language/op_precedence 392 392 0
should_pass/language/enum_if_let_large_type 768 760 1.04166666666667
should_pass/language/is_prime 1192 1192 0
should_pass/language/method_unambiguous 656 648 1.21951219512195
should_pass/language/match_expressions_structs 488 480 1.63934426229508
should_pass/language/match_expressions_with_self 544 536 1.47058823529412
should_pass/language/ref_mutable_fn_args_call 408 400 1.96078431372549
should_pass/language/array_generics 472 464 1.69491525423729
should_pass/language/callpath_local_shadowing 256 256 0
should_pass/language/smo 2232 2224 0.3584229390681
should_pass/language/typeinfo_custom_callpath2 296 296 0
should_pass/language/where_clause_generic_traits 960 952 0.833333333333333
should_pass/language/mutable_arrays_enum 464 456 1.72413793103448
should_pass/language/ref_mutable_fn_args_bool 392 392 0
should_pass/language/supertraits 6128 6128 0
should_pass/language/const_inits 1936 1928 0.413223140495868
should_pass/language/tuple_access 528 520 1.51515151515152
should_pass/language/trait_method_generic_qualified 512 504 1.5625
should_pass/language/associated_type_parameter 424 416 1.88679245283019
should_pass/language/tuple_single_element 440 432 1.81818181818182
should_pass/language/bool_and_or 424 416 1.88679245283019
should_pass/language/associated_type_fully_qualified 728 720 1.0989010989011
should_pass/language/associated_type_container 2072 2064 0.386100386100386
should_pass/language/contract_caller_dynamic_address 2264 2248 0.706713780918728
should_pass/language/module_dep_self 24 24 0
should_pass/language/name_resolution_after_monomorphization 424 416 1.88679245283019
should_pass/language/associated_type_container_in_library 2072 2064 0.386100386100386
should_pass/language/type_alias 4016 3976 0.99601593625498
should_pass/language/mutable_arrays_swap 408 400 1.96078431372549
should_pass/language/break_and_continue_block_ret 232 232 0
should_pass/language/main_returns_unit 256 256 0
should_pass/language/unary_not_basic_2 392 392 0
should_pass/language/mutable_and_initd 504 504 0
should_pass/language/method_type_args 256 256 0
should_pass/language/raw_identifiers 520 512 1.53846153846154
should_pass/language/mega_example 11160 11144 0.14336917562724
should_pass/language/match_expressions_constants 2328 2320 0.343642611683849
should_pass/language/generic_structs 664 664 0
should_pass/language/predicate_while_dep 120 120 0
should_pass/language/unary_not_basic 392 392 0
should_pass/language/b256_ops 4120 4120 0
should_pass/language/generic_where_in_impl_self2 576 576 0
should_pass/language/reassignment_operators 400 392 2
should_pass/language/shadowing/shadowed_glob_imports 528 520 1.51515151515152
should_pass/language/attributes_warnings 256 256 0
should_pass/language/mutable_arrays 408 400 1.96078431372549
should_pass/language/match_expressions_unreachable_catch_all_last_arm 2488 2488 0
should_pass/language/memcpy 552 544 1.44927536231884
should_pass/language/deprecated 24 24 0
should_pass/language/ret_string_in_struct 544 536 1.47058823529412
should_pass/language/enum_destructuring 464 456 1.72413793103448
should_pass/language/associated_type_and_associated_const 424 416 1.88679245283019
should_pass/language/associated_type_method 424 416 1.88679245283019
should_pass/language/implicit_casting 408 400 1.96078431372549
should_pass/language/where_clause_enums 824 824 0
should_pass/language/valid_impurity 1216 1216 0
should_pass/language/contract_caller_as_ret 1272 1272 0
should_pass/language/associated_type_ascription 424 416 1.88679245283019
should_pass/language/match_expressions_inside_generic_functions 600 592 1.33333333333333
should_pass/language/match_expressions_explicit_rets 392 392 0
should_pass/language/binop_intrinsics 408 400 1.96078431372549
should_pass/language/match_expressions_mismatched 456 448 1.75438596491228
should_pass/language/funcs_with_generic_types 392 392 0
should_pass/language/trait_import_with_star 256 256 0
should_pass/language/match_expressions_unreachable_catch_all_middle_arm 2296 2296 0
should_pass/language/if_let_no_side_effects 496 488 1.61290322580645
should_pass/language/b256_bad_jumps 400 392 2
should_pass/language/bitwise_not 392 392 0
should_pass/language/dummy_method_issue 536 536 0
should_pass/language/prelude_access2 256 256 0
should_pass/language/enum_in_fn_decl 480 472 1.66666666666667
should_pass/language/enum_type_inference 408 400 1.96078431372549
should_pass/language/size_of 400 392 2
should_pass/language/const_decl_and_use_in_library 408 400 1.96078431372549
should_pass/language/typeinfo_custom_callpath 296 296 0
should_pass/language/struct_init_reorder 352 352 0
should_pass/language/tuple_desugaring 456 448 1.75438596491228
should_pass/language/match_expressions_simple 488 480 1.63934426229508
should_pass/language/inline_if_expr_const 256 256 0
should_pass/language/associated_const_impl_multiple 1040 1040 0
should_pass/language/enum_variant_imports 520 512 1.53846153846154
should_pass/language/if_elseif_enum 832 824 0.961538461538462
should_pass/language/where_clause_impls 664 656 1.20481927710843
should_pass/language/generic_tuple_trait 904 904 0
should_pass/language/mutable_arrays_nested 400 392 2
should_pass/language/generic_traits 1392 1384 0.574712643678161
should_pass/language/associated_const_impl 424 416 1.88679245283019
should_pass/language/match_expressions_all 2328 2296 1.3745704467354
should_pass/language/modulo_uint_test 392 392 0
should_pass/language/implicit_return 408 400 1.96078431372549
should_pass/language/fqp_in_lib 368 368 0
should_pass/language/retd_b256 568 560 1.40845070422535
should_pass/language/generic_transpose 984 984 0
should_pass/language/asm_uninitialized_register_shadows_item 448 448 0
should_pass/language/complex_cfg 1176 1168 0.680272108843537
should_pass/language/struct_field_access 408 400 1.96078431372549
should_pass/language/redundant_return 400 392 2
should_pass/language/asm_without_return 24 24 0
should_pass/language/associated_const_abi_multiple 2224 2224 0
should_pass/language/while_loops 656 648 1.21951219512195
should_pass/language/same_const_name 320 320 0
should_pass/language/self_impl_reassignment 1008 1008 0
should_pass/language/reassignment_rhs_lhs_evaluation_order 1016 1008 0.78740157480315
should_pass/language/match_expressions_enums 3408 3400 0.234741784037559
should_pass/language/smo_opcode 480 472 1.66666666666667
should_pass/language/import_trailing_comma 408 400 1.96078431372549
should_pass/language/enum_instantiation 3848 3840 0.207900207900208
should_pass/language/trait_method_ascription_disambiguate 512 504 1.5625
should_pass/language/eq_and_neq 2288 2280 0.34965034965035
should_pass/language/string_slice/string_slice_features 488 480 1.63934426229508
should_pass/language/string_slice/string_slice_script 768 768 0
should_pass/language/string_slice/string_slice_contract 4064 4064 0
should_pass/language/tuple_indexing 424 416 1.88679245283019
should_pass/language/ref_mutable_fn_args_struct 408 400 1.96078431372549
should_pass/language/revert_in_first_if_branch 240 240 0
should_pass/language/ref_mutable_arrays 408 400 1.96078431372549
should_pass/language/nested_structs 1176 1168 0.680272108843537
should_pass/language/typeinfo_custom_callpath_with_import 312 312 0
should_pass/language/multi_impl_self 408 400 1.96078431372549
should_pass/language/generic_struct_instantiation 400 392 2
should_pass/language/generic_trait_constraints 1224 1216 0.65359477124183
should_pass/language/primitive_type_argument 408 400 1.96078431372549
should_pass/language/fix_opcode_bug 408 400 1.96078431372549
should_pass/language/arg_demotion_inline 1472 1464 0.543478260869565
should_pass/language/ret_small_string 504 496 1.58730158730159
should_pass/language/doc_comments 1280 1272 0.625
should_pass/language/match_expressions_empty_enums 408 400 1.96078431372549
should_pass/language/const_decl_in_library 416 416 0
should_pass/language/generics_in_contract 3664 3664 0
should_pass/language/if_implicit_unit 256 256 0
should_pass/language/impure_ifs 1192 1184 0.671140939597315
should_pass/language/break_and_continue 968 968 0
should_pass/language/ref_mutable_fn_args_u32 424 416 1.88679245283019
should_pass/language/contract_implements_multiple_abis_with_same_methods 2208 2208 0
should_pass/storage_into 1976 1968 0.404858299595142
should_pass/resolve_local_items_that_shadow_imports 400 400 0
should_pass/break_in_strange_positions 888 880 0.900900900900901
should_pass/impl_self_dependency_order_conflict 560 560 0
should_pass/multiple_supertraits_for_abis 872 872 0
should_pass/continue_in_strange_positions 1448 1440 0.552486187845304
should_pass/supertraits_for_abis_diamond 664 664 0
should_pass/superabi_diamond 1224 1224 0
should_pass/supertraits_via_self 216 216 0
should_pass/supertraits_for_abis 944 944 0
should_pass/dca/alias_type_ascription 256 256 0
should_pass/dca/alias_type_ascription_generic 256 256 0
should_pass/dca/constant_decl_expr 408 400 1.96078431372549
should_pass/dca/impl_unused_fn 424 416 1.88679245283019
should_pass/dca/log_stdlib 936 928 0.854700854700855
should_pass/dca/unused_trait 256 256 0
should_pass/dca/impl_self_alias 256 256 0
should_pass/dca/impl_trait_single 400 392 2
should_pass/dca/trait_method 256 256 0
should_pass/dca/unused_free_fn 256 256 0
should_pass/dca/unused_variable_in_free_fn 256 256 0
should_pass/dca/revert 400 392 2
should_pass/dca/unused_variable 256 256 0
should_pass/dca/impl_trait_multiple 400 392 2
should_pass/dca/contract/superabi_contract_calls 2376 2360 0.673400673400673
should_pass/dca/contract/unused_struct_field 1488 1480 0.537634408602151
should_pass/dca/contract/unused_struct_field_enum 1800 1792 0.444444444444444
should_pass/dca/contract/abi_fn_params 1384 1384 0
should_pass/dca/contract/unused_struct_field_array 1568 1560 0.510204081632653
should_pass/dca/contract/unused_struct_field_tuple 1488 1480 0.537634408602151
should_pass/dca/unused_struct 256 256 0
should_pass/dca/func_param 256 256 0
should_pass/dca/alias_unused 256 256 0
should_pass/dca/multiple_fns_same_name 256 256 0
should_pass/dca/allow_dead_code 256 256 0
should_pass/dca/trait_method_neq 480 472 1.66666666666667
should_pass/dca/all_paths_return 400 392 2
should_pass/dca/unused_fields 400 392 2
should_pass/dca/impl_self_alias2 256 256 0
should_pass/dca/alias_lib 304 304 0
should_pass/dca/multiple_enums_same_name 256 256 0
should_pass/dca/generic_fn_trait_constraint 256 256 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 288 288 0
should_pass/dca/constant_while 256 256 0
should_pass/dca/constant_struct 408 400 1.96078431372549
should_pass/dca/unused_enum 256 256 0
should_pass/dca/impl_self 256 256 0
should_pass/dca/log_intrinsic 936 928 0.854700854700855
should_pass/dca/struct_field_no_warning 520 512 1.53846153846154
should_pass/dca/trait_method_lib 24 24 0
should_pass/supertraits_for_abis_ownable 4864 4864 0
should_pass/return_into 1112 1104 0.719424460431655
should_pass/unit_tests/script_multi_test 1048 1048 0
should_pass/unit_tests/nested_libs 1520 1520 0
should_pass/unit_tests/contract_multi_test 4424 4424 0
should_pass/unit_tests/memcpyopt 1456 1456 0
should_pass/unit_tests/script-contract-calls 1696 1696 0
should_pass/unit_tests/lib_single_test 88 88 0
should_pass/unit_tests/aggr_indexing 8088 8088 0
should_pass/unit_tests/log_decode 992 992 0
should_pass/unit_tests/workspace_test 1048 1048 0
should_pass/unit_tests/predicate_with_nested_libs 704 704 0
should_pass/unit_tests/script_with_nested_libs 1728 1728 0
should_pass/unit_tests/should_revert 160 160 0
should_pass/unit_tests/contract_with_nested_libs 2568 2568 0
should_pass/unit_tests/stack_indexing_overflow 5392 5392 0
should_pass/unit_tests/lib_multi_test 784 784 0
should_pass/unit_tests/contract-multi-contract-calls 1696 1696 0
should_pass/unit_tests/predicate_multi_test 288 288 0
should_pass/unit_tests/regalloc_spill 784 776 1.02040816326531
should_pass/blanket_impl 408 400 1.96078431372549
should_pass/non_payable_implicit_zero_coins 2440 2424 0.655737704918033
should_pass/test_abis/abi_impl_methods_in_json_abi 960 960 0
should_pass/test_abis/abi_impl_methods_callable 3496 3496 0
should_pass/static_analysis/cei_pattern_violation_in_struct 3328 3296 0.961538461538462
should_pass/static_analysis/cei_pattern_violation 3104 3072 1.03092783505155
should_pass/static_analysis/cei_pattern_violation_in_match_statement-1 3768 3752 0.424628450106157
should_pass/static_analysis/cei_pattern_violation_in_if_statement-2 3296 3264 0.970873786407767
should_pass/static_analysis/cei_pattern_violation_in_while_loop-1 3288 3256 0.97323600973236
should_pass/static_analysis/cei_pattern_violation_in_while_loop-3 3288 3256 0.97323600973236
should_pass/static_analysis/cei_pattern_violation_storage_var_read 3616 3600 0.442477876106195
should_pass/static_analysis/cei_pattern_violation_in_codeblocks_other_than_in_functions 3312 3280 0.966183574879227
should_pass/static_analysis/cei_pattern_violation_in_func_app-3 3296 3264 0.970873786407767
should_pass/static_analysis/cei_pattern_violation_in_func_app-1 3296 3264 0.970873786407767
should_pass/static_analysis/storage_annotations_unused_write 1272 1264 0.628930817610063
should_pass/static_analysis/cei_pattern_violation_in_asm_block_smo 2568 2552 0.623052959501558
should_pass/static_analysis/cei_pattern_violation_in_asm_block 2592 2576 0.617283950617284
should_pass/static_analysis/cei_pattern_violation_in_intrinsic_call 3296 3264 0.970873786407767
should_pass/static_analysis/storage_annotations_unused_read 1272 1264 0.628930817610063
should_pass/static_analysis/cei_pattern_violation_storage_map_and_vec 9584 9560 0.250417362270451
should_pass/static_analysis/cei_pattern_violation_in_asm_block_tro 4696 4680 0.340715502555366
should_pass/static_analysis/cei_pattern_violation_in_while_loop-2 3272 3240 0.97799511002445
should_pass/static_analysis/cei_pattern_violation_smo_intrinsic 2664 2648 0.600600600600601
should_pass/static_analysis/storage_annotations_unused_read_and_write 1272 1264 0.628930817610063
should_pass/static_analysis/cei_pattern_violation_in_standalone_function 3104 3072 1.03092783505155
should_pass/static_analysis/cei_pattern_violation_in_asm_block_read 2984 2952 1.07238605898123
should_pass/static_analysis/cei_pattern_violation_in_asm_block_mint_burn 3112 3088 0.77120822622108
should_pass/static_analysis/cei_pattern_violation_in_while_loop-4 3272 3240 0.97799511002445
should_pass/static_analysis/cei_pattern_violation_in_asm_block_tr 4696 4680 0.340715502555366
should_pass/static_analysis/cei_pattern_violation_in_tuple 3328 3296 0.961538461538462
should_pass/static_analysis/cei_pattern_violation_in_asm_block_bal 2544 2528 0.628930817610063
should_pass/static_analysis/cei_pattern_violation_more_complex_logic 18440 18424 0.086767895878525
should_pass/static_analysis/cei_pattern_violation_storage_struct_read 3344 3312 0.956937799043062
should_pass/static_analysis/cei_pattern_violation_storage_var_update 3184 3168 0.50251256281407
should_pass/static_analysis/cei_pattern_violation_in_if_statement-1 3320 3288 0.963855421686747
should_pass/static_analysis/cei_pattern_violation_in_func_app-2 3296 3264 0.970873786407767
should_pass/superabi 960 960 0
should_pass/superabi_supertrait_external_call 216 216 0
should_pass/non_payable_zero_coins_let_binding 2440 2424 0.655737704918033
should_pass/superabi_diamond_impl 1224 1224 0

@vaivaswatha vaivaswatha marked this pull request as ready for review August 19, 2024 03:50
@vaivaswatha vaivaswatha requested a review from a team as a code owner August 19, 2024 03:50
IGI-111
IGI-111 previously approved these changes Aug 21, 2024
@IGI-111 IGI-111 requested a review from a team August 21, 2024 05:56
IGI-111
IGI-111 previously approved these changes Aug 26, 2024
@IGI-111 IGI-111 requested a review from xunilrj August 26, 2024 12:13
@IGI-111 IGI-111 requested a review from a team September 2, 2024 13:42
@vaivaswatha vaivaswatha enabled auto-merge (squash) September 9, 2024 06:54
@vaivaswatha
Copy link
Contributor Author

Reminder to accept this PR ! @FuelLabs/sway-compiler

@vaivaswatha vaivaswatha merged commit e549ca5 into master Sep 23, 2024
36 checks passed
@vaivaswatha vaivaswatha deleted the vaivaswatha/cse branch September 23, 2024 08:48
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants