<div dir="ltr">Hi All,<div><br></div><div>We are observing a segmentation fault in opt with -x86-codegen switch. This happens with any general llvm-IR. Please find attached a simple testcase. It can be reproduced with the following.</div><div><br></div><div>opt -S -o a.out.ll a.ll -x86-codegen<br></div><div><br></div><div>The traces of the error is as follows.</div><div><br></div><div>Stack dump:<br>0.      Program arguments: /home/raghesh/code/mirror/llvm-project/build/bin/opt -S -o a.out.ll a.ll -x86-codegen<br> #0 0x00007ff5339d728a llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/home/raghesh/code/mirror/llvm-project/build/bin/../lib/libLLVM-10svn.so+0x76528a)<br> #1 0x00007ff5339d4f64 llvm::sys::RunSignalHandlers() (/home/raghesh/code/mirror/llvm-project/build/bin/../lib/libLLVM-10svn.so+0x762f64)<br> #2 0x00007ff5339d50a2 SignalHandler(int) (/home/raghesh/code/mirror/llvm-project/build/bin/../lib/libLLVM-10svn.so+0x7630a2)<br> #3 0x00007ff53291ef20 (/lib/x86_64-linux-gnu/libc.so.6+0x3ef20)<br> #4 0x00007ff533d86080 llvm::MachineModuleInfo::MachineModuleInfo(llvm::LLVMTargetMachine const*) (/home/raghesh/code/mirror/llvm-project/build/bin/../lib/libLLVM-10svn.so+0xb14080)<br> #5 0x00007ff533d86178 llvm::Pass* llvm::callDefaultCtor<llvm::MachineModuleInfo>() (/home/raghesh/code/mirror/llvm-project/build/bin/../lib/libLLVM-10svn.so+0xb14178)<br> #6 0x00007ff533b0c83d llvm::PMTopLevelManager::schedulePass(llvm::Pass*) (/home/raghesh/code/mirror/llvm-project/build/bin/../lib/libLLVM-10svn.so+0x89a83d)<br> #7 0x00007ff533b0c9a3 llvm::PMTopLevelManager::schedulePass(llvm::Pass*) (/home/raghesh/code/mirror/llvm-project/build/bin/../lib/libLLVM-10svn.so+0x89a9a3)<br> #8 0x0000557729456ac4 main (/home/raghesh/code/mirror/llvm-project/build/bin/opt+0x1dac4)<br> #9 0x00007ff532901b97 __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:344:0<br>#10 0x000055772945795a _start (/home/raghesh/code/mirror/llvm-project/build/bin/opt+0x1e95a)<br>Segmentation fault (core dumped)<br></div><div><br></div><div>With a preliminary analysis, it can be seen that MachineModuleInfo pass which is a "Required" dependency of MachineFunction pass invoked by -x86-codegen.Here, the MachineModuleInfo is created through the call to 

 llvm::callDefaultCtor<llvm::MachineModuleInfo>(). However, the default constructor of MachineModuleInfo expects a valid pointer to 

LLVMTargetMachine, which happens to be nullptr in this case and triggers seg fault when accessed.</div><div><br></div><div>It would be great if someone could have a look at it and provide or suggest the proper fix.</div><div><br></div><div>Regards,</div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>------------------------------</div><div>Raghesh Aloor<br></div><div>Sr. Software Engineer</div><div>AMD India Pvt. Ltd.</div><div>Bengaluru.</div><div>------------------------------</div></div></div></div></div></div></div></div></div></div>