In this case, you're using a linker has an LLVM plugin to do link-time optimization (LTO). When compiling with clang, you (are choosing to via the -flto
flag or another flag) emit LLVM bitcode files instead of native object files, then the linker engages LLVM to combine the files being linked, and with additional symbol information from the native object files, LLVM optimizes them collectively allowing inlining across translation units and more.
You've upgraded your clang to a newer version which is outputting bitcode files too new for your linker's LLVM plugin to read. Does your new LLVM have a new LLVMgold.so
? See https://llvm.org/docs/GoldPlugin.html .