WIP: optimize cmp_eq of enums #78
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "programmerjake/fayalite:cmp_eq-opts"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The plan is to optimize cmp_eq of enums by:
ops::StructuralEqoperation that has aassume_padding_is_zeroedflag so comparison of enums can lower to just a simple integer comparesimplify_enumsto deduce when it can setassume_padding_is_zeroedwhile retaining comparison semantics by having a fixed-point connection graph algorithm to find all places that could generate enum values with padding that isn't zero.(this includes
cast_bits_toand external inputs, when enums are lowered to integers bysimplify_enums).DONE:
StructuralEqisn't generated when it can't be used (e.g. customized comparison, or when the types aren't equal, or when the type contains aSimOnly)TODO:
deduce_structural_eq_flagsto not have a O(n^2) algorithm.80a11ec1c2toaf0f1f608aaf0f1f608ato4bd6db3de8View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.