[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