[PATCH] D159485: [DebugInfo][RemoveDIs] Use getStableDebugLoc when picking IRBuilder source locations
Augie Fackler via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 14 10:07:45 PDT 2023
durin42 added inline comments.
================
Comment at: llvm/include/llvm/IR/IRBuilder.h:200
if (IP != TheBB->end())
- SetCurrentDebugLocation(IP->getDebugLoc());
+ SetCurrentDebugLocation(IP->getStableDebugLoc());
}
----------------
durin42 wrote:
> jmorse wrote:
> > durin42 wrote:
> > > The crash I'm seeing is on this line, I can give you the stack trace if you want to look in parallel with my investigation.
> > Rather than the stack, the contents of the block would be super-useful -- if you can attach an interactive debugger before the crash, then when the crash occurs, running:
> > call IP->dump()
> > call IP->getParent()->dump()
> > Will print all the relevant information to the terminal / output
> How does this as a follow-up look to you?
>
> ```
> diff --git a/llvm/lib/IR/Instruction.cpp b/llvm/lib/IR/Instruction.cpp
> index 6b0348f8f691..37cce7729741 100644
> --- a/llvm/lib/IR/Instruction.cpp
> +++ b/llvm/lib/IR/Instruction.cpp
> @@ -886,8 +886,11 @@ Instruction::getPrevNonDebugInstruction(bool SkipPseudoOp) const {
> }
>
> const DebugLoc &Instruction::getStableDebugLoc() const {
> - if (isa<DbgInfoIntrinsic>(this))
> - return getNextNonDebugInstruction()->getDebugLoc();
> + if (isa<DbgInfoIntrinsic>(this)) {
> + const Instruction* next = getNextNonDebugInstruction();
> + if (next)
> + return next->getDebugLoc();
> + }
> return getDebugLoc();
> }
> ```
Finally got the dump (had to write it to a file in /tmp, sigh):
```
call void @llvm.dbg.declare(metadata ptr %x, metadata !4697, metadata !DIExpression()), !dbg !4698
start:
call void @llvm.dbg.declare(metadata ptr %x, metadata !562, metadata !DIExpression()), !dbg !563
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D159485/new/
https://reviews.llvm.org/D159485
More information about the llvm-commits
mailing list