<div dir="ltr"><div><div><div><div><div><div><br></div>I'm trying to use LLVMGetBitcodeModuleInContext2 to load a .bc file.<br></div>However, it's not working.<br><br></div>The code looks something like this:<br><br>void llvm_load_IR_library(char *path)<br><br>{<br>        LLVMContextRef global_context;<br>        LLVMMemoryBufferRef module_path;<br>        LLVMModuleRef ir_lib_module;<br>        bool flag;<br><br>        module_path = LLVMCreateMemoryBufferWithMemoryRange(path, strlen(path), "path", 1);<br><br>        global_context = LLVMGetGlobalContext();<br><br>        flag = LLVMGetBitcodeModuleInContext2(global_context, module_path, &ir_lib_module);<br><br>        printf("LLVMGetBitcodeModuleInContet2() returned %d\n", flag);<br>}<br><br></div>When this code is called, this is printed:<br><br>error: Invalid bitcode signature<br><br></div>from what I can tell, the bitcode file is correct:<br><br>00000000  42 43 c0 de 35 14 00 00  05 00 00 00 62 0c 30 24  |BC..5.......b.0$|<br>...<br><br></div><div>This seems to match this code:<br><br>/// Helper to read the header common to all bitcode files.<br>static bool hasValidBitcodeHeader(BitstreamCursor &Stream) {<br>  // Sniff for the signature.<br>  if (Stream.Read(8) != 'B' ||<br>      Stream.Read(8) != 'C' ||<br>      Stream.Read(4) != 0x0 ||<br>      Stream.Read(4) != 0xC ||<br>      Stream.Read(4) != 0xE ||<br>      Stream.Read(4) != 0xD)<br>    return false;<br>  return true;<br>}<br><br></div><div>I'm out of ideas. Anything obvious I'm doing wrong?<br><br></div><div>Toshi<br><br></div><div><br></div><br><div><div><br><div><br><br></div></div></div></div>