[all-commits] [llvm/llvm-project] 6464c4: [LiveDebugVariables] Strip all debug instructions ...

rlougher via All-commits all-commits at lists.llvm.org
Thu Nov 26 06:32:16 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 6464c4a170173a2b476ff4be6e160836032b68fe
      https://github.com/llvm/llvm-project/commit/6464c4a170173a2b476ff4be6e160836032b68fe
  Author: Robert Lougher <robert.lougher at sony.com>
  Date:   2020-11-26 (Thu, 26 Nov 2020)

  Changed paths:
    M llvm/lib/CodeGen/LiveDebugVariables.cpp
    A llvm/test/DebugInfo/X86/live-debug-vars-nodebug.ll

  Log Message:
  -----------
  [LiveDebugVariables] Strip all debug instructions from nodebug functions

A crash/assertion failure in the greedy register allocator was tracked
down to a debug instr being passed to LiveIntervals::getInstructionIndex.
Normally this should not occur as debug instructions are collected and
removed by LiveDebugVariables before RA, and reinserted afterwards.
However, when a function has no debug info, LiveDebugVariables simply
strips any debug values that are present as they're not needed (this
situation will occur when a function with debug info is inlined into a
nodebug function). The problem is, it only removes DBG_VALUE instructions,
leaving DBG_LABELs (the cause of the crash).

This patch updates the LiveDebugVariables nodebug path to remove all debug
instructions. The test case verifies that DBG_VALUE/DBG_LABEL instructions
are present, and that they are stripped.

When -experimental-debug-variable-locations is enabled, certain variable
locations are represented by DBG_INSTR_REF instead of DBG_VALUE. The test
case verifies that a DBG_INSTR_REF is emitted by the option, and that it
is also stripped.

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




More information about the All-commits mailing list