Я новичок в Clang и llvm. Я пытаюсь сгенерировать неоптимизированную версию битового кода из исходного кода c. Я обнаружил, что сгенерированный битовый код имеет постоянную оптимизацию свертывания, которая мне не нужна.
Я использую эту команду: clang -O0 -Xclang -disable-O0-optnone test1.c -S -emit-llvm -o test1.ll
Файл test1.c имеет следующий код:
int test() {
int y;
y = 2 * 4;
return y;
}
Содержимое файла test1.ll:
Вместо того, чтобы генерировать инструкцию для умножения 2 и 4, он непосредственно сохраняет значение 8, выполняя операцию постоянного сворачивания:
сохранить i32 8, i32 *% 1, выровнять 4
Было бы здорово, если бы кто-то любезно дал мне знать, что мне не хватает и как мне отключить постоянную оптимизацию сворачивания. Я использую версию llvm 6.0.0.
Спасибо.