Suppose I have a multi-threaded application that needs to compile many independant bitcodes. All threads do compilation concurrently. For each thread, it creates its own context like the following: LLVMContext *mycontext = new LLVMContext(); But it seems there are still places that explicitly refer to the global context (like in Module.cpp). I wonder wether this is indended or has yet to be fixed ? Thanks Junjie -------- Module.cpp GlobalVariable *ilist_traits<GlobalVariable>::createSentinel() { GlobalVariable *Ret = new GlobalVariable(Type::getInt32Ty(getGlobalContext()), false, GlobalValue::ExternalLinkage); // This should not be garbage monitored. LeakDetector::removeGarbageObject(Ret); return Ret; } GlobalAlias *ilist_traits<GlobalAlias>::createSentinel() { GlobalAlias *Ret = new GlobalAlias(Type::getInt32Ty(getGlobalContext()), GlobalValue::ExternalLinkage); // This should not be garbage monitored. LeakDetector::removeGarbageObject(Ret); return Ret; }