[all-commits] [llvm/llvm-project] a64ebb: [WebAssembly] Add NullifyDebugValueLists pass

Heejin Ahn via All-commits all-commits at lists.llvm.org
Mon May 24 11:36:36 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: a64ebb8637277998f77e55d335faca6fdcf5859b
      https://github.com/llvm/llvm-project/commit/a64ebb8637277998f77e55d335faca6fdcf5859b
  Author: Heejin Ahn <aheejin at gmail.com>
  Date:   2021-05-24 (Mon, 24 May 2021)

  Changed paths:
    M llvm/lib/Target/WebAssembly/CMakeLists.txt
    M llvm/lib/Target/WebAssembly/WebAssembly.h
    M llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp
    M llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
    A llvm/lib/Target/WebAssembly/WebAssemblyNullifyDebugValueLists.cpp
    M llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
    R llvm/test/CodeGen/WebAssembly/reg-stackify-dbg.mir
    A llvm/test/DebugInfo/WebAssembly/dbg-value-list.ll

  Log Message:
  -----------
  [WebAssembly] Add NullifyDebugValueLists pass

`WebAssemblyDebugValueManager` does not currently handle
`DBG_VALUE_LIST`, which is a recent addition to LLVM. We tried to
nullify them within the constructor of `WebAssemblyDebugValueManager` in
D102589, but it made the class error-prone to use because it deletes
instructions within the constructor and thus invalidates existing
iterators within the BB, so the user of the class should take special
care not to use invalidated iterators. This actually caused a bug in
ExplicitLocals pass.

Instead of trying to fix ExplicitLocals pass to make the iterator usage
correct, which is possible but error-prone, this adds
NullifyDebugValueLists pass that nullifies all `DBG_VALUE_LIST`
instructions before we run WebAssembly specific passes in the backend.
We can remove this pass after we implement handlers for
`DBG_VALUE_LIST`s in `WebAssemblyDebugValueManager` and elsewhere.

Fixes https://github.com/emscripten-core/emscripten/issues/14255.

Reviewed By: dschuff

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




More information about the All-commits mailing list