[llvm-dev] setDataLayout segfault
Frank Winter via llvm-dev
llvm-dev at lists.llvm.org
Wed Sep 14 07:59:40 PDT 2016
I get a segfault with this code when setting the data layout:
int main(int argc, char** argv)
{
llvm::InitializeNativeTarget();
llvm::LLVMContext TheContext;
unique_ptr<Module> Mod(new Module("A",TheContext));
llvm::EngineBuilder engineBuilder(std::move(Mod));
std::string mcjit_error;
engineBuilder.setMCPU(llvm::sys::getHostCPUName());
engineBuilder.setEngineKind(llvm::EngineKind::JIT);
engineBuilder.setOptLevel(llvm::CodeGenOpt::Aggressive);
engineBuilder.setErrorStr(&mcjit_error);
llvm::TargetOptions targetOptions;
targetOptions.AllowFPOpFusion = llvm::FPOpFusion::Fast;
engineBuilder.setTargetOptions( targetOptions );
TargetMachine *targetMachine = engineBuilder.selectTarget();
assert(targetMachine && "failed to create target machine");
std::cout <<
targetMachine->createDataLayout().getStringRepresentation() << "\n";
Mod.get()->setDataLayout(
targetMachine->createDataLayout().getStringRepresentation() ); // this
segfaults
Mod.get()->setDataLayout( targetMachine->createDataLayout() ); // as
well as this
}
Backtrace:
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
e-m:e-i64:64-f80:128-n8:16:32:64-S128
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff5f65832 in llvm::SmallVectorTemplateCommon<unsigned char,
void>::end (this=0x148) at
/home/fwinter/svn/llvm-3.9/include/llvm/ADT/SmallVector.h:117
117 iterator end() { return (iterator)this->EndX; }
(gdb) bt
#0 0x00007ffff5f65832 in llvm::SmallVectorTemplateCommon<unsigned char,
void>::end (this=0x148) at
/home/fwinter/svn/llvm-3.9/include/llvm/ADT/SmallVector.h:117
#1 llvm::SmallVectorImpl<unsigned char>::clear (this=0x148) at
/home/fwinter/svn/llvm-3.9/include/llvm/ADT/SmallVector.h:345
#2 0x00007ffff5fa13b5 in llvm::DataLayout::clear (this=0x138) at
/home/fwinter/svn/llvm-3.9/lib/IR/DataLayout.cpp:545
#3 0x00007ffff5f9f561 in llvm::DataLayout::reset (this=0x138, Desc=...)
at /home/fwinter/svn/llvm-3.9/lib/IR/DataLayout.cpp:179
#4 0x00007ffff60b25ca in llvm::Module::setDataLayout (this=0x0,
Desc=...) at /home/fwinter/svn/llvm-3.9/lib/IR/Module.cpp:377
#5 0x0000000000406c46 in main (argc=1, argv=0x7fffffffde68) at main.cc:95
Any idea?
Frank
More information about the llvm-dev
mailing list