Ahmad Nouralizadeh via llvm-dev
2018-Aug-07 15:03 UTC
[llvm-dev] Error Calling eraseFromParent()
Hi. This is part of my code: ... if (auto* op = dyn_cast<BinaryOperator>(&I)) { Value* lhs = op->getOperand(0); Value* rhs = op->getOperand(1); Value* mul = builder.CreateMul(lhs, rhs); for (auto& U : op->uses()) { User* user = U.getUser(); user->setOperand(U.getOperandNo(), mul); } I.eraseFromParent(); } ... This leads to the following runtime error: LLVMSymbolizer: error reading file: No such file or directory ... Does anybody know the solution? Regards. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180807/a57704e6/attachment.html>
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. 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. 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. --paulr From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Ahmad Nouralizadeh via llvm-dev Sent: Tuesday, August 07, 2018 11:03 AM To: llvm-dev at lists.llvm.org Subject: [llvm-dev] Error Calling eraseFromParent() Hi. This is part of my code: ... if (auto* op = dyn_cast<BinaryOperator>(&I)) { Value* lhs = op->getOperand(0); Value* rhs = op->getOperand(1); Value* mul = builder.CreateMul(lhs, rhs); for (auto& U : op->uses()) { User* user = U.getUser(); user->setOperand(U.getOperandNo(), mul); } I.eraseFromParent(); } ... This leads to the following runtime error: LLVMSymbolizer: error reading file: No such file or directory ... Does anybody know the solution? Regards. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180807/d7ca0184/attachment.html>
Ahmad Nouralizadeh via llvm-dev
2018-Aug-07 20:26 UTC
[llvm-dev] Error Calling eraseFromParent()
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: ... bool runOnFunction(Function &F) override { for (auto &I : instructions(F)) { if (auto* op = dyn_cast<BinaryOperator>(&I)) { IRBuilder<> builder(op); Value* lhs = op->getOperand(0); Value* rhs = op->getOperand(1); Value* mul = builder.CreateMul(lhs, rhs); for (auto& U : op->uses()) { User* user = U.getUser(); user->setOperand(U.getOperandNo(), mul); } I.eraseFromParent(); } } ... 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. Regards. On Tue, Aug 7, 2018 at 8:11 PM, <paul.robinson at sony.com> wrote:> 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. > > 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. > > > > 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. > > --paulr > > > > *From:* llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] *On Behalf Of *Ahmad > Nouralizadeh via llvm-dev > *Sent:* Tuesday, August 07, 2018 11:03 AM > *To:* llvm-dev at lists.llvm.org > *Subject:* [llvm-dev] Error Calling eraseFromParent() > > > > Hi. > > This is part of my code: > > ... > > if (auto* op = dyn_cast<BinaryOperator>(&I)) { > > Value* lhs = op->getOperand(0); > > Value* rhs = op->getOperand(1); > > Value* mul = builder.CreateMul(lhs, rhs); > > > > for (auto& U : op->uses()) { > > User* user = U.getUser(); > > user->setOperand(U.getOperandNo(), mul); > > } > > > > I.eraseFromParent(); > > } > > ... > > This leads to the following runtime error: > > LLVMSymbolizer: error reading file: No such file or directory > > ... > > Does anybody know the solution? > > Regards. >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180808/c96b2204/attachment.html>