Ответ 1
См. обсуждение LLVMdev "Как назначить константу регистру?" Как указывалось Duncan Sands:
Позвольте мне сказать, что в целом делать это бессмысленно. Из-за формы SSA, если значение% x установлено равным 5, вы не можете установить его на что-то еще позже. Таким образом, везде, где вы используете% x, вы можете просто использовать 5 вместо этого. Обычная ситуация заключается в том, что у вас есть регистр% x, и из-за выполнения оптимизации вы обнаруживаете, что на самом деле% x всегда будет иметь значение 5. Вы можете использовать RAUW (иначе метод replaceAllUsesWith), чтобы заменить% x на 5 везде.
Нить создала пару альтернатив прямому использованию константы:
- Используйте
alloca
, чтобы получить указатель, сохранить его, а затем загрузить значение по мере необходимости. - Создайте глобальное указание на константу, затем загрузите это значение по мере необходимости.
Кто-то отметил, что подход alloca
закончится использованием реестра после оптимизации.
Независимо от того, что использование константы непосредственно, как было предложено @SK-logic, кажется самым чистым решением.