llvm-link failing depending on order of files

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?

That is strange. Can you put the .ll files in a bug report?

Done.

http://llvm.org/bugs/show_bug.cgi?id=22544