[LLVMdev] LLVM 2.9 - JIT problem on Windows

Alan Garny alan.garny at dpag.ox.ac.uk
Fri Nov 25 04:25:39 PST 2011


> > > My bet is that your code is writing through a stray pointer. By
> > > removing the call to InitializeNativeTarget you are simply hiding
> > > your bug by running the code within a context that turns its effects
> harmless.
> > >
> > > OTOH, LLVM 2.9 may be the culprit. In any case, it is time for a
> > > assembler- level debug session :-) You can try using the Windows
> > > equivalent for valgrind and pray that it catches the problem. Or use
> valgrind
> > on Linux.
> >
> > Thanks, I thought it might be an issue with a stray pointer. It's just
> that I
> > assumed that since 'my' LLVM code is a shameless copy/paste of one of
> > LLVM's examples that it would be fine. Anyway, I am going to
> > investigate things further.
> 
> Hmm... I have just spent some time going through various Valgrind reports,
> but to no avail. Nothing wrong with 'my' LLVM code... Frustrating!

FWIW, I have simplified 'my' LLVM code to just:

    llvm::InitializeNativeTarget();
    llvm::LLVMContext context;

    llvm::Module *module = new llvm::Module("test", context);
    llvm::Function *fooFunc =
llvm::cast<llvm::Function>(module->getOrInsertFunction("foo",
 
llvm::Type::getVoidTy(context),
 
(llvm::Type *) 0));
    llvm::BasicBlock *basicBlock = llvm::BasicBlock::Create(context,
"entryBlock", fooFunc);

    llvm::ReturnInst::Create(context, basicBlock);

    llvm::ExecutionEngine *executionEngine =
llvm::EngineBuilder(module).create();

    llvm::outs() << "We just constructed this LLVM module:\n\n" << *module;
    llvm::outs() << "\n\nRunning foo...\n";
    llvm::outs().flush();

    std::vector<llvm::GenericValue> noargs;
    executionEngine->runFunction(fooFunc, noargs);
    executionEngine->freeMachineCodeForFunction(fooFunc);

    delete executionEngine;

    llvm::llvm_shutdown();

and I am still getting the same problem. I have then copied/pasted some
other LLVM code (from the LLVM distribution) and... yes, still the same
problem!

Just in case, I have built LLVM using MinGW/MSYS + Python on Windows 7 and
with:

    ./configure --disable-docs --enable-shared --enable-targets=host

Could it be that something is wrong with my MinGW shared library?

Alan




More information about the llvm-dev mailing list