{'fraction_non_alphanumeric': 0.013800424628450107, 'fraction_numerical': 0.0010615711252653928, 'mean_word_length': 5.6879432624113475, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Modification of the SSAPRE algorithm for semantic code motion

Code motion (CM) is a technique for program transformation aimed at removing program statements that are redundant due to recomputing previously produced values. Such transformations improve the program performance and decrease its size, so redundancy elimination is employed by all optimizing compilers. Most of the algorithms used in production compilers perform syntactic code motion [1] in the sense that they find and remove redundancy between lexically identical expressions. This paper presents an improvement over the well-known SSAPRE algorithm that was previously limited to syntactic code motion. The proposed modification increases the algorithm strength by capturing the redundancy carried through assignment statements, including code patterns that cannot be optimized by any existing CM technique. The presented algorithm can be thought of as semantic code motion.