[all-commits] [llvm/llvm-project] 24ab9b: Generalize the pass registration mechanism used by...

serge-sans-paille via All-commits all-commits at lists.llvm.org
Thu Jan 2 07:52:23 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 24ab9b537e61b3fe5e6a1019492ff6530d82a3ee
      https://github.com/llvm/llvm-project/commit/24ab9b537e61b3fe5e6a1019492ff6530d82a3ee
  Author: serge_sans_paille <sguelton at redhat.com>
  Date:   2020-01-02 (Thu, 02 Jan 2020)

  Changed paths:
    M clang/lib/CodeGen/BackendUtil.cpp
    M clang/lib/CodeGen/CMakeLists.txt
    M clang/tools/driver/CMakeLists.txt
    M clang/tools/driver/cc1_main.cpp
    M llvm/CMakeLists.txt
    M llvm/cmake/modules/AddLLVM.cmake
    M llvm/docs/WritingAnLLVMPass.rst
    A llvm/examples/Bye/Bye.cpp
    A llvm/examples/Bye/CMakeLists.txt
    M llvm/examples/CMakeLists.txt
    M llvm/include/llvm/Config/llvm-config.h.cmake
    A llvm/test/Feature/load_extension.ll
    M llvm/test/Other/new-pm-defaults.ll
    M llvm/test/Other/new-pm-thinlto-defaults.ll
    M llvm/test/Other/opt-O0-pipeline.ll
    M llvm/test/Other/opt-O2-pipeline.ll
    M llvm/test/Other/opt-O3-pipeline.ll
    M llvm/test/Other/opt-Os-pipeline.ll
    M llvm/test/lit.cfg.py
    M llvm/test/lit.site.cfg.py.in
    M llvm/tools/CMakeLists.txt
    M llvm/tools/bugpoint/CMakeLists.txt
    M llvm/tools/bugpoint/bugpoint.cpp
    M llvm/tools/opt/CMakeLists.txt
    M llvm/tools/opt/NewPMDriver.cpp
    M llvm/tools/opt/opt.cpp
    M llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn
    M polly/include/polly/RegisterPasses.h
    M polly/lib/CMakeLists.txt
    A polly/lib/Plugin/Polly.cpp
    R polly/lib/Polly.cpp
    M polly/lib/Support/RegisterPasses.cpp
    M polly/test/Unit/lit.site.cfg.in
    M polly/test/lit.site.cfg.in
    M polly/test/update_check.py

  Log Message:
  -----------
  Generalize the pass registration mechanism used by Polly to any third-party tool

There's quite a lot of references to Polly in the LLVM CMake codebase. However
the registration pattern used by Polly could be useful to other external
projects: thanks to that mechanism it would be possible to develop LLVM
extension without touching the LLVM code base.

This patch has two effects:

1. Remove all code specific to Polly in the llvm/clang codebase, replaicing it
   with a generic mechanism

2. Provide a generic mechanism to register compiler extensions.

A compiler extension is similar to a pass plugin, with the notable difference
that the compiler extension can be configured to be built dynamically (like
plugins) or statically (like regular passes).

As a result, people willing to add extra passes to clang/opt can do it using a
separate code repo, but still have their pass be linked in clang/opt as built-in
passes.

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




More information about the All-commits mailing list