[all-commits] [llvm/llvm-project] 7561f9: [DebugInfo][CSInfo] Avoid crash when defining supe...

Jeremy Morse via All-commits all-commits at lists.llvm.org
Tue Apr 25 06:18:45 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 7561f9cd5c841096c8c2f7b10b33d505c1a21b17
      https://github.com/llvm/llvm-project/commit/7561f9cd5c841096c8c2f7b10b33d505c1a21b17
  Author: Jeremy Morse <jeremy.morse at sony.com>
  Date:   2023-04-25 (Tue, 25 Apr 2023)

  Changed paths:
    M llvm/lib/CodeGen/TargetInstrInfo.cpp
    A llvm/test/DebugInfo/MIR/X86/dbgcall-site-partial-describe-subreg.mir

  Log Message:
  -----------
  [DebugInfo][CSInfo] Avoid crash when defining super-regs

In rare situations involving AVX intrinsics, it seems LLVM can be coaxed
into generating copies to arguments that look like this:

    $xmm0 = VMOVAPSrr $xmm1, implicit-def $ymm0
    CALL64 @something ymm0

This particular form of copy implicitly zeros the upper lanes of ymm0,
hence there's an implicit-def for the register in the copy. The X86
implementation of describeLoadedValue doesn't attempt to describe this sort
of copy which causes the generic implementation in
TargetInstrInfo::describeLoadedValue to fire an assertion saying it
expected the target hook to handle it.

Play it safe in the generic implementation and return the "no location /
value" return value, rather than asserting.

Differential Revision: https://reviews.llvm.org/D148626




More information about the All-commits mailing list