[all-commits] [llvm/llvm-project] 088d27: [ADT][DebugInfo][RemoveDIs] Add extra bits to ilis...

Jeremy Morse via All-commits all-commits at lists.llvm.org
Tue Oct 17 07:26:59 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 088d272e83259a5d8e577a3d2e62012c42a9f9db
      https://github.com/llvm/llvm-project/commit/088d272e83259a5d8e577a3d2e62012c42a9f9db
  Author: Jeremy Morse <jeremy.morse at sony.com>
  Date:   2023-10-17 (Tue, 17 Oct 2023)

  Changed paths:
    M llvm/CMakeLists.txt
    M llvm/cmake/modules/HandleLLVMOptions.cmake
    M llvm/include/llvm/ADT/ilist_iterator.h
    M llvm/include/llvm/ADT/ilist_node.h
    M llvm/include/llvm/ADT/ilist_node_options.h
    M llvm/include/llvm/ADT/simple_ilist.h
    M llvm/include/llvm/IR/BasicBlock.h
    M llvm/include/llvm/IR/GlobalAlias.h
    M llvm/include/llvm/IR/GlobalIFunc.h
    M llvm/include/llvm/IR/GlobalVariable.h
    M llvm/include/llvm/IR/Instruction.h
    M llvm/include/llvm/IR/Instructions.h
    M llvm/include/llvm/IR/SymbolTableListTraits.h
    M llvm/include/llvm/IR/ValueSymbolTable.h
    M llvm/lib/IR/BasicBlock.cpp
    M llvm/lib/IR/Instruction.cpp
    M llvm/lib/IR/Instructions.cpp
    M llvm/lib/IR/SymbolTableListTraitsImpl.h
    M llvm/unittests/ADT/CMakeLists.txt
    A llvm/unittests/ADT/IListIteratorBitsTest.cpp

  Log Message:
  -----------
  [ADT][DebugInfo][RemoveDIs] Add extra bits to ilist_iterator for debug-info

...behind an experimental CMAKE option that's off by default.

This patch adds a new ilist-iterator-like class that can carry two extra bits
as well as the usual node pointer. This is part of the project to remove
debug-intrinsics from LLVM: see the rationale here [0], they're needed to
signal whether a "position" in a BasicBlock includes any debug-info before or
after the iterator.

This entirely duplicates ilist_iterator, attempting re-use showed it to be a
false economy. It's enable-able through the existing ilist_node options
interface, hence a few sites where the instruction-list type needs to be
updated. The actual main feature, the extra bits in the class, aren't part of
the class unless the cmake flag is given: this is because there's a
compile-time cost associated with it, and I'd like to get everything in-tree
but off-by-default so that we can do proper comparisons.

Nothing actually makes use of this yet, but will do soon, see the Phab patch
stack.

[0] https://discourse.llvm.org/t/rfc-instruction-api-changes-needed-to-eliminate-debug-intrinsics-from-ir/68939

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




More information about the All-commits mailing list