Сучасні компілятори можуть виконувати великий набір досліджень вхідного коду, щоб досягти переваги у продуктивності, використовуваній пам'яті, розмірі вихідного файла тощо. Приклад розповсюджених видів аналізу: Аналіз потоку даних () — побудова ланцюга використання-визначення () на базі якого у подальшого виконуються численні оптимізації. Аналіз залежностей — пошук інструкцій та блоків коду, які не залежать від послідовності виконання в певному контексті.