diff --git a/llvm/docs/WritingAnLLVMNewPMPass.rst b/llvm/docs/WritingAnLLVMNewPMPass.rst --- a/llvm/docs/WritingAnLLVMNewPMPass.rst +++ b/llvm/docs/WritingAnLLVMNewPMPass.rst @@ -48,20 +48,11 @@ First, configure and build LLVM as described in :doc:`GettingStarted`. Next, we will reuse an existing directory (creating a new directory involves -modifying more ``CMakeLists.txt``s than we want). For -this example, we'll use ``llvm/lib/Transforms/HelloNew/HelloWorld.cpp``, -which has already been created. If you'd like to create your own pass, add a -new source file into ``llvm/lib/Transforms/HelloNew/CMakeLists.txt`` under -``HelloWorld.cpp``: - -.. code-block:: cmake - - add_llvm_component_library(LLVMHelloWorld - HelloWorld.cpp - - DEPENDS - intrinsics_gen - ) +messing around with more CMake files than we want). For this example, we'll use +``llvm/lib/Transforms/Utils/HelloWorld.cpp``, which has already been created. +If you'd like to create your own pass, add a new source file into +``llvm/lib/Transforms/Utils/CMakeLists.txt`` (assuming you want your pass in +the ``Transforms/Utils`` directory. Now that we have the build set up for a new pass, we need to write the code for the pass itself. @@ -74,7 +65,7 @@ Now that the build is setup for a new pass, we just have to write it. First we need to define the pass in a header file. We'll create -``llvm/include/llvm/Transforms/HelloNew/HelloWorld.h``. The file should +``llvm/include/llvm/Transforms/Utils/HelloWorld.h``. The file should contain the following boilerplate: .. code-block:: c++ @@ -102,12 +93,12 @@ Our class is in the ``llvm`` namespace so that we don't pollute the global namespace. -Next we'll create ``llvm/lib/Transforms/HelloNew/HelloWorld.cpp``, starting +Next we'll create ``llvm/lib/Transforms/Utils/HelloWorld.cpp``, starting with .. code-block:: c++ - #include "llvm/Transforms/HelloNew/HelloWorld.h" + #include "llvm/Transforms/Utils/HelloWorld.h" ... to include the header file we just created. @@ -135,7 +126,7 @@ That's it for the pass itself. Now in order to "register" the pass, we need to add it to a couple places. Add the following to -``llvm\lib\Passes\PassRegistry.def`` in the ``FUNCTION_PASS`` section +``llvm/lib/Passes/PassRegistry.def`` in the ``FUNCTION_PASS`` section .. code-block:: c++ @@ -143,14 +134,14 @@ ... which adds the pass under the name "helloworld". -``llvm\lib\Passes\PassRegistry.def`` is #include'd into -``llvm\lib\Passes\PassBuilder.cpp`` multiple times for various reasons. Since +``llvm/lib/Passes/PassRegistry.def`` is #include'd into +``llvm/lib/Passes/PassBuilder.cpp`` multiple times for various reasons. Since it constructs our pass, we need to also add the proper #include in -``llvm\lib\Passes\PassBuilder.cpp``: +``llvm/lib/Passes/PassBuilder.cpp``: .. code-block:: c++ - #include "llvm/Transforms/HelloNew/HelloWorld.h" + #include "llvm/Transforms/Utils/HelloWorld.h" This should be all the code necessary for our pass, now it's time to compile and run it. @@ -186,12 +177,12 @@ -------------- Testing our pass is important to prevent future regressions. We'll add a lit -test at ``llvm/test/Transforms/HelloNew/helloworld.ll``. See +test at ``llvm/test/Transforms/Utils/helloworld.ll``. See :doc:`TestingGuide` for more information on testing. .. code-block:: llvm - $ cat llvm/test/Transforms/HelloNew/helloworld.ll + $ cat llvm/test/Transforms/Utils/helloworld.ll ; RUN: opt -disable-output -passes=helloworld %s 2>&1 | FileCheck %s ; CHECK: {{^}}foo{{$}} diff --git a/llvm/include/llvm/Transforms/HelloNew/HelloWorld.h b/llvm/include/llvm/Transforms/Utils/HelloWorld.h rename from llvm/include/llvm/Transforms/HelloNew/HelloWorld.h rename to llvm/include/llvm/Transforms/Utils/HelloWorld.h diff --git a/llvm/lib/Passes/CMakeLists.txt b/llvm/lib/Passes/CMakeLists.txt --- a/llvm/lib/Passes/CMakeLists.txt +++ b/llvm/lib/Passes/CMakeLists.txt @@ -15,7 +15,6 @@ Analysis Core Coroutines - HelloNew IPO InstCombine ObjCARC diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -84,7 +84,6 @@ #include "llvm/Transforms/Coroutines/CoroEarly.h" #include "llvm/Transforms/Coroutines/CoroElide.h" #include "llvm/Transforms/Coroutines/CoroSplit.h" -#include "llvm/Transforms/HelloNew/HelloWorld.h" #include "llvm/Transforms/IPO/AlwaysInliner.h" #include "llvm/Transforms/IPO/Annotation2Metadata.h" #include "llvm/Transforms/IPO/ArgumentPromotion.h" @@ -215,6 +214,7 @@ #include "llvm/Transforms/Utils/CanonicalizeFreezeInLoops.h" #include "llvm/Transforms/Utils/EntryExitInstrumenter.h" #include "llvm/Transforms/Utils/FixIrreducible.h" +#include "llvm/Transforms/Utils/HelloWorld.h" #include "llvm/Transforms/Utils/InjectTLIMappings.h" #include "llvm/Transforms/Utils/InstructionNamer.h" #include "llvm/Transforms/Utils/LCSSA.h" diff --git a/llvm/lib/Transforms/CMakeLists.txt b/llvm/lib/Transforms/CMakeLists.txt --- a/llvm/lib/Transforms/CMakeLists.txt +++ b/llvm/lib/Transforms/CMakeLists.txt @@ -6,7 +6,6 @@ add_subdirectory(IPO) add_subdirectory(Vectorize) add_subdirectory(Hello) -add_subdirectory(HelloNew) add_subdirectory(ObjCARC) add_subdirectory(Coroutines) add_subdirectory(CFGuard) diff --git a/llvm/lib/Transforms/HelloNew/CMakeLists.txt b/llvm/lib/Transforms/HelloNew/CMakeLists.txt deleted file mode 100644 --- a/llvm/lib/Transforms/HelloNew/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -add_llvm_component_library(LLVMHelloNew - HelloWorld.cpp - - DEPENDS - intrinsics_gen - - LINK_COMPONENTS - Core - Support - ) diff --git a/llvm/lib/Transforms/Utils/CMakeLists.txt b/llvm/lib/Transforms/Utils/CMakeLists.txt --- a/llvm/lib/Transforms/Utils/CMakeLists.txt +++ b/llvm/lib/Transforms/Utils/CMakeLists.txt @@ -27,6 +27,7 @@ FunctionImportUtils.cpp GlobalStatus.cpp GuardUtils.cpp + HelloWorld.cpp InlineFunction.cpp InjectTLIMappings.cpp InstructionNamer.cpp diff --git a/llvm/lib/Transforms/HelloNew/HelloWorld.cpp b/llvm/lib/Transforms/Utils/HelloWorld.cpp rename from llvm/lib/Transforms/HelloNew/HelloWorld.cpp rename to llvm/lib/Transforms/Utils/HelloWorld.cpp --- a/llvm/lib/Transforms/HelloNew/HelloWorld.cpp +++ b/llvm/lib/Transforms/Utils/HelloWorld.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -#include "llvm/Transforms/HelloNew/HelloWorld.h" +#include "llvm/Transforms/Utils/HelloWorld.h" using namespace llvm; diff --git a/llvm/utils/gn/secondary/llvm/lib/Passes/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Passes/BUILD.gn --- a/llvm/utils/gn/secondary/llvm/lib/Passes/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/lib/Passes/BUILD.gn @@ -8,7 +8,6 @@ "//llvm/lib/Target", "//llvm/lib/Transforms/AggressiveInstCombine", "//llvm/lib/Transforms/Coroutines", - "//llvm/lib/Transforms/HelloNew", "//llvm/lib/Transforms/IPO", "//llvm/lib/Transforms/InstCombine", "//llvm/lib/Transforms/Instrumentation", diff --git a/llvm/utils/gn/secondary/llvm/lib/Transforms/HelloNew/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Transforms/HelloNew/BUILD.gn deleted file mode 100644 --- a/llvm/utils/gn/secondary/llvm/lib/Transforms/HelloNew/BUILD.gn +++ /dev/null @@ -1,9 +0,0 @@ -static_library("HelloNew") { - output_name = "LLVMHelloNew" - deps = [ - "//llvm/lib/Analysis", - "//llvm/lib/IR", - "//llvm/lib/Support", - ] - sources = [ "HelloWorld.cpp" ] -} diff --git a/llvm/utils/gn/secondary/llvm/lib/Transforms/Utils/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Transforms/Utils/BUILD.gn --- a/llvm/utils/gn/secondary/llvm/lib/Transforms/Utils/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/lib/Transforms/Utils/BUILD.gn @@ -34,6 +34,7 @@ "FunctionImportUtils.cpp", "GlobalStatus.cpp", "GuardUtils.cpp", + "HelloWorld.cpp", "InjectTLIMappings.cpp", "InlineFunction.cpp", "InstructionNamer.cpp",