从clang传递到llc的参数是什么?

从clang传递到llc的参数是什么?,clang,llvm,llvm-clang,llc,Clang,Llvm,Llvm Clang,Llc,我正在从事llvm项目。最近,我尝试使用clang命令行将我的一个.c文件编译成一个.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=

我正在从事llvm项目。最近,我尝试使用clang命令行将我的一个.c文件编译成一个.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
成功了!!(?) 我如何才能看到clang如何调用后端(llc)?
我尝试运行带有-v标志的铿锵,但它没有显示它如何调用后端…

因此,第一个突出的问题是llc默认为O2而不是O0,因此您可能希望首先查看那里。

我认为它需要.bc文件中的opt级别,因为我无法将-O0传递给llc…当然可以。看看llc-help,你看不到“clang如何调用后端(llc)”,因为它不是。llc是一个在某些IR上调用后端的命令行工具,但clang不调用,它的驱动程序将直接构建后端。