<div dir="ltr">The code is really simple. But I can not the reason for the segmentation fault. I only know that the eraseFromParent() function leads to it. The whole code is:<div>...<br><div><div>bool runOnFunction(Function &F) override {</div><div><br></div><div><span style="white-space:pre">        </span>for (auto &I : instructions(F)) {</div><div><br></div><div><span style="white-space:pre">                </span>if (auto* op = dyn_cast<BinaryOperator>(&I)) {</div><div><span style="white-space:pre">                      </span>IRBuilder<> builder(op);</div><div><br></div><div><span style="white-space:pre">                       </span>Value* lhs = op->getOperand(0);</div><div><span style="white-space:pre">                    </span>Value* rhs = op->getOperand(1);</div><div><span style="white-space:pre">                    </span>Value* mul = builder.CreateMul(lhs, rhs);</div><div><br></div><div><span style="white-space:pre">                    </span>for (auto& U : op->uses()) {</div><div><span style="white-space:pre">                   </span>  User* user = U.getUser();</div><div><span style="white-space:pre">                  </span>  user->setOperand(U.getOperandNo(), mul);</div><div><span style="white-space:pre">                        </span>}</div><div><br></div><div><span style="white-space:pre">                    </span>I.eraseFromParent();</div><div>    <span style="white-space:pre">    </span>}</div><div><br></div><div>}<span style="white-space:pre">   </span></div><div>...<br></div></div></div><div>And I think that the code worked well with LLVM-3.6.0 that I tested one year ago. Now, I use LLVM-6.0.0.</div><div>Regards.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 7, 2018 at 8:11 PM,  <span dir="ltr"><<a href="mailto:paul.robinson@sony.com" target="_blank">paul.robinson@sony.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div class="m_-8596610410077619253WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">LLVMSymbolizer is invoked while trying to pretty-print a crash backtrace.  "error reading file" suggests that you are on Windows and it cannot find the .pdb
 file with symbol information.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">If that's the case, are you doing either a Debug or RelWithDebInfo build?  If you are, I don't know what else to suggest.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Note that LLVMSymbolizer is trying to make the traceback more understandable; it has nothing to do with the cause of your problem.  If you are triggering an
 assertion, the assertion message should tell you where that is.  (You did run cmake with –DLLVM_ENABLE_ASSERTIONS=ON, right?)  If not, likely you are dereferencing a null pointer somewhere.  Personally I debug with 'printf' statements, but that's just me.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">--paulr<u></u><u></u></span></p>
<p class="MsoNormal"><a name="m_-8596610410077619253__MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></a></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> llvm-dev [mailto:<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@<wbr>lists.llvm.org</a>]
<b>On Behalf Of </b>Ahmad Nouralizadeh via llvm-dev<br>
<b>Sent:</b> Tuesday, August 07, 2018 11:03 AM<br>
<b>To:</b> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<b>Subject:</b> [llvm-dev] Error Calling eraseFromParent()<u></u><u></u></span></p>
</div>
</div><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">Hi.<u></u><u></u></p>
<div>
<p class="MsoNormal">This is part of my code:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">...<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">if (auto* op = dyn_cast<BinaryOperator>(&I)) {<u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">   Value* lhs = op->getOperand(0);<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">   Value* rhs = op->getOperand(1);<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">   Value* mul = builder.CreateMul(lhs, rhs);<u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">   for (auto& U : op->uses()) {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">      User* user = U.getUser();<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">      user->setOperand(U.<wbr>getOperandNo(), mul);<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">   }<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">   I.eraseFromParent();<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">}<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">...<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">This leads to the following runtime error:<u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">LLVMSymbolizer: error reading file: No such file or directory<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">...<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Does anybody know the solution?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Regards.<u></u><u></u></p>
</div>
</div>
</div>
</div></div></div>
</div>
</div>

</blockquote></div><br></div>