Предположу, что повторяющиеся литералы превращаются в одно упоминание — различие, которое нельзя выявить без полной рекомпиляции.
Так вот меня и интересует, почему нельзя сделать первичный промежуточный этап для определения неизменного кода. То о чем вы говорите никак этому не помешает.
Если нет оптимизаций включенных, то машинный код практически выглядит, как A -> B, где A это сорс код, а B машинный.