In order to simplify distributed build system integration, where actions
may be scheduled before the Thin Link which determines the list of
objects selected by the linker. The gold plugin currently will emit
0-sized index files for objects not selected by the link, to enable
checking for expected output files by the build system. If the build
system then schedules a backend action for these bitcode files, we want
to be able to fall back to normal compilation instead of failing.
Fallback is enabled under an option in LLVM (D28410), in which case a nullptr
is returned from llvm::getModuleSummaryIndexForFile. Clang can just proceed
with non-ThinLTO compilation in that case.
I am investigating whether this can be addressed in our build system, but that
is a longer term fix and so this enables a workaround in the meantime.
Is it common to do this in clang?