[all-commits] [llvm/llvm-project] af6d43: [AsmPrinter][DebugInfo] Create EntryValue mode for...

Felipe de Azevedo Piovezan via All-commits all-commits at lists.llvm.org
Wed Aug 23 09:29:43 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: af6d43ea6641917445d8c335952d849d9b00b36a
      https://github.com/llvm/llvm-project/commit/af6d43ea6641917445d8c335952d849d9b00b36a
  Author: Felipe de Azevedo Piovezan <fpiovezan at apple.com>
  Date:   2023-08-23 (Wed, 23 Aug 2023)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
    M llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
    M llvm/test/DebugInfo/AArch64/dbg-entry-value-swiftasync.mir

  Log Message:
  -----------
  [AsmPrinter][DebugInfo] Create EntryValue mode for DbgVariable

With D149881, we converted EntryValue MachineFunction table entries into
`DbgVariables` initialized by a "DbgValue" intrinsic, which can only handle a
single, non-fragment DIExpression. However, it is desirable to handle variables
with multiple fragments and DIExpressions.

To do this, we expand the `DbgVariable` class to handle the EntryValue case.
This class can already operate under three different "modes" (stack slot,
unchanging location described by a dbg value, changing location described by a
loc list). A fourth case is added as a separate class entirely, but a subsequent
patch should redesign `DbgVariable` with four subclasses in order to make the
code more readable.

This patch also exposed a bug in the `beginEntryValueExpression` function, which
was not initializing the `LocationFlags` properly. Note how the
`finalizeEntryValue` function resets that flag. We fix this bug here, as testing
this changing in isolation would be tricky.

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




More information about the All-commits mailing list