I need to link several llvm object files (.bc) into a single such file (.ll or .bc). As I understand it, the tool for doing this is llvm-link. However, it seems to be failing in some cases depending on the order of files presented to it.
The simplest test case involves a pair of files.
blank.cpp contains nothing.
main.cpp contains:
#include <llvm/Support/raw_ostream.h>
and may or may not contain a main function that just returns 0; it makes no difference to the results. (The include directive is, however, required in order to generate the error.)
llvm-link main.bc blank.bc works.
llvm-link blank.bc main.bc generates a linked object file that on attempting to convert to an executable, gives the following error message:
a1.ll:30:1: error: unknown selection kind
$"\01??_7_Iostream_error_category@std@@6B@" = comdat
^
1 error generated.
(A slightly more complex test case gives a different error message at earlier link time.)
Anyone have any idea about the cause of this and how to avoid it?