Due to the large number of files modified in the previous PR, we plan to split the PR into three parts for separate submission:
Patch 1: Add a pass to calculate the hash value of MachineBlock and write the hash into the bb_address_map section. Related test cases and tools will also be modified.
Patch 2: Introduce a new Propeller profile data format and add a pass to read the profile, storing the mapping between MachineBlock hash values and execution frequencies.
Patch 3: Introduce Matching and Inference techniques to obtain the execution frequencies of all MachineBlocks, generate cluster information for MachineFunction, and use the profile in lld to generate symbol sorting.