Какие арги передаются из Clang в llc?

Я работаю над проектом llvm. Недавно я попытался скомпилировать один из моих файлов.c с помощью командной строки clang в файл.s с помощью следующей команды:

clang --target=arch -S -O0 select.c -o select.s

и произошел сбой в бэкэнде в функции ARCHInstrInfo::storeRegToStackSlot с обратным следом стека. Однако, когда я попытался сделать это поэтапно:

clang  -O0 -emit-llvm select.c -c -o select.bc
llc  -filetype=asm -march=arch  ./select.bc -o ./select.s  -print-after-all -debug-only isel

это удалось!! (?) Как я могу увидеть, как лязг звонит бэкенду (llc)? Я попытался запустить clang с флагом -v, но он не печатал, как он вызывает бэкэнд...

1 ответ

Итак, первое, что бросается в глаза, - это то, что по умолчанию используется значение O2, а не O0, так что вы можете посмотреть сначала.

Другие вопросы по тегам