This merge request makes a lot of changes for DataFlowMask:
- Changes several functions with
O(n^2)
performance toO(n)
wheren
is the number of vardecls and arguments.- I had a real-world use case with n = 60k, which didn't compile in 4 hours time. Now it compiles in 12 minutes.
- This performance issue was around since before my birth :)
- Refactors most functions to have less code duplication.
- Solves a bug where a mask generated by DFMgenMaskSet gets extended with zeroes instead of ones after the mask base expands.
- GREATLY improves documentation, which was pretty much non-existent.
- Adds DFMsetMaskXor/DFMgenMaskXor functions to act as the symmetric difference set operation.
- Partially co-authored by @sbs, thanks for the help!