<div dir="ltr"><div>Hi,<br><br>The llvm documentation specify that :<br>"PassRegistry is NOT thread-safe. If you want to use LLVM on multiple threads simultaneously, you will need to use a separate PassRegistry on each thread."<br><br>I have some code that create a module, run some optimizations using the llvm::legacy::FunctionPassManager and llvm::legacy::PassManager, and then jit the code with an execution engine.<br>If I create my own PassRegistry and initialize pass like:<br><br>    PassRegistry* Registry = new llvm::PassRegistry();<br>    initializeCore(*Registry);<br>    ... etc ...<br><br><br>Using my passregistry, my program crash in :<br>llvm::PMTopLevelManager::schedulePass(llvm::Pass*)<br>const PassInfo *PI = findAnalysisPassInfo(*I); -> which is calling the global PassRegistry<br><br>So how can I tell the FunctionPassManager to use my PassRegistry instead of the global pass registry? What am I missing here?<br></div>Any help will be appreciated.<br><div><br>Regards,<br>Christophe</div></div>