今天发现,执行
将导致 clang 将 LLVM IR 输出写入名为
将导致 clang 将 LLVM IR 输出写入名为
经进一步检查,发现这是因为
clang++ -S -Xclang -emit-llvm -o foo.s foo.cpp
将导致 clang 将 LLVM IR 输出写入名为
foo.s
的文件,而执行clang++ -S -fsyntax-only -Xclang -emit-llvm -o foo.s foo.cpp
将导致 clang 将 LLVM IR 输出写入名为
foo.ll
的文件经进一步检查,发现这是因为
-fsyntax-only
的存在会导致 clang driver 不再向 clang -cc1 传递 -o
参数,而 -emit-llvm
又需要一个输出文件,因此 clang -cc1 生成了一个默认的输出文件名即 foo.ll