Hi Dan, Yury, llvm-dev,
The WebAssembly backend has recently started using MachineInstr::collectDebugValues in r351216 [0] for debuginfo manipulation. FYI, there are some debuginfo changes coming that might invalidate your use of collectDebugValues, so I thought I’d let you know.
LLVM currently places DBG_VALUE machine pseudo-instructions immediately after the instruction that defines the DBG_VALUEs operand. collectDebugValues relies on this behaviour: it only collects DBG_VALUEs that immediately follow the defining instruction. However, sometime soon LLVM will instead place DBG_VALUE instructions where variable assignments in the source program occurred (ish) [1], removing the behaviour collectDebugValues relies on.
I have zero knowledge of WebAssembly, so my question is “Does the target code rely on this behaviour?”. No WebAssembly tests fail when the behaviour changes, but I figured I’d ask anyway.
[0] https://reviews.llvm.org/rL351216
[1] https://reviews.llvm.org/D58453