[all-commits] [llvm/llvm-project] 7c4e8c: [mlir] Disentangle dialect and extension registrat...

Nicolas Vasilache via All-commits all-commits at lists.llvm.org
Mon Aug 21 17:40:26 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 7c4e8c6a273f25b3ef33e9c123b3969632ab59bb
      https://github.com/llvm/llvm-project/commit/7c4e8c6a273f25b3ef33e9c123b3969632ab59bb
  Author: Nicolas Vasilache <nicolasvasilache at users.noreply.github.com>
  Date:   2023-08-22 (Tue, 22 Aug 2023)

  Changed paths:
    M mlir/examples/transform/Ch2/transform-opt/transform-opt.cpp
    M mlir/examples/transform/Ch3/transform-opt/transform-opt.cpp
    M mlir/include/mlir/Dialect/GPU/Transforms/Passes.h
    M mlir/include/mlir/InitAllDialects.h
    M mlir/include/mlir/InitAllExtensions.h
    M mlir/include/mlir/Target/LLVM/NVVM/Target.h
    M mlir/include/mlir/Target/LLVM/ROCDL/Target.h
    M mlir/include/mlir/Target/LLVMIR/Dialect/All.h
    M mlir/include/mlir/Target/LLVMIR/Dialect/GPU/GPUToLLVMIRTranslation.h
    M mlir/lib/CAPI/RegisterEverything/RegisterEverything.cpp
    M mlir/lib/Dialect/GPU/Transforms/ModuleToBinary.cpp
    M mlir/lib/Dialect/GPU/Transforms/NVVMAttachTarget.cpp
    M mlir/lib/Dialect/GPU/Transforms/ROCDLAttachTarget.cpp
    M mlir/lib/Dialect/GPU/Transforms/SerializeToBlob.cpp
    M mlir/lib/Dialect/GPU/Transforms/SerializeToCubin.cpp
    M mlir/lib/Dialect/GPU/Transforms/SerializeToHsaco.cpp
    M mlir/lib/Target/LLVM/NVVM/Target.cpp
    M mlir/lib/Target/LLVM/ROCDL/Target.cpp
    M mlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp
    M mlir/lib/Target/LLVMIR/Dialect/GPU/GPUToLLVMIRTranslation.cpp
    M mlir/lib/Target/LLVMIR/Dialect/GPU/SelectObjectAttr.cpp
    M mlir/tools/mlir-opt/mlir-opt.cpp
    M mlir/unittests/Target/LLVM/SerializeNVVMTarget.cpp
    M mlir/unittests/Target/LLVM/SerializeROCDLTarget.cpp

  Log Message:
  -----------
  [mlir] Disentangle dialect and extension registrations.

This revision avoids the registration of dialect extensions in Pass::getDependentDialects.

Such registration of extensions can be dangerous because `DialectRegistry::isSubsetOf` is
always guaranteed to return false for extensions (i.e. there is no mechanism to track
whether a lambda is already in the list of already registered extensions).
When the context is already in a multi-threaded mode, this is guaranteed to assert.

Arguably a more structured registration mechanism for extensions with a unique ExtensionID
could be envisioned in the future.

In the process of cleaning this up, multiple usage inconsistencies surfaced around the
registration of translation extensions that this revision also cleans up.

Reviewed By: springerm

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




More information about the All-commits mailing list