{'fraction_non_alphanumeric': 0.014340344168260038, 'fraction_numerical': 0.0, 'mean_word_length': 5.307228915662651, '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}}
Validating Correctness of Compiler Optimizer Execution Using Temporal Logic

It is very important that compiler optimization works correctly without changing the semantics of a program. However, because there are many complex optimizations, it is generally dicult to implement them correctly. In this paper, we propose a technique for validating whether or not the optimization transformations to the program have been performed correctly, after the execution of the optimizer. We first describe the properties that program points modified by the optimization have to satisfy to preserve the program semantics, in terms of temporal logic. The system then performs model checking on the optimized program, to check if these program points satisfy the logical formulas described. This technique has the advantages that it can be applied to complex optimizers that already exist, and that checking occurs within a realistic time. We have implemented and executed this technique and found an unknown bug in an optimizer within a widely-used compiler.