История изменений
Исправление pftBest, (текущая версия) :
Если ты знаком с растом, то наверное слышал про lazy_static!. Например я написал такую программу, которая обязательно инициализирует этот статик первой строчкой в main, а дальше в некоторых вызовах в глубине программы он используется. Как ты предлагаешь заставить constant propagation убрать лоад и сравнение с нулем на каждом обращении к этому статику?
На самом деле с практической точки зрения это полезно, если кто-то неакуратно полезет в код и случайно уберет инициализацию в main, то программа не упадет. Но с точки зрения производительности, исполнять лишний код на каждом обращении к статикам не хорошо.
P.S. Когда в язык добавили поддержку union, то появилась возможность сделать untagged option, который частично решает эту проблему. Его придумали для экономии ресурсов на микроконтроллерах.
Исходная версия pftBest, :
Если ты знаком с растом, то наверное слышал про lazy_static!. Например я написал такую программу, которая обязательно инициализирует этот статик первой строчкой в main, а дальше в некоторых вызовах в глубине программы он используется. Как ты предлагаешь заставить constant propagation убрать лоад и сравнение с нулем на каждом обращении к этому статику?
На самом деле с практической точки зрения это полезно, если кто-то неакуратно полезет в код и случайно уберет инициализацию в main, то программа не упадет. Но с точки зрения производительности, исполнять лишний код на каждом обращении к статикам не хорошо.