[llvm-dev] Can DBG_VALUE instructions use undefined vregs?

Jeremy Morse via llvm-dev llvm-dev at lists.llvm.org
Wed Oct 6 03:46:41 PDT 2021


On Tue, Oct 5, 2021 at 11:29 PM Amara Emerson via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> One GlobalISel compile time optimization patch (https://reviews.llvm.org/D109750) has generated some debate over whether it’s semantically allowed/not-an-error for a DBG_VALUE machine instruction to have a use of a vreg that doesn’t have a corresponding definition.

I don't think there's a semantic reason why DBG_VALUEs of undefined
vregs should be disallowed -- they can be interpreted the same as a
DBG_VALUE $noreg, just in a non-canonical form. They would correctly
become DBG_VALUE $noreg's when LiveDebugVariables runs, as the vreg
wouldn't be live.

In practical terms, it could slightly mislead people reading MIR, and
there might be code out there that expects to find a vreg definition
for anything that DBG_VALUEs refer to, which I imagine would be fairly
easy to work around.


More information about the llvm-dev mailing list