1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 12:41:49 +01:00

[NewPM][HelloWorld] Move HelloWorld to Utils

To prevent creating a new component, which creates a new library.

Reviewed By: ychen

Differential Revision: https://reviews.llvm.org/D95907
This commit is contained in:
Arthur Eubanks 2021-02-02 16:43:32 -08:00
parent d38c68eaec
commit 213c28c3fc
11 changed files with 19 additions and 48 deletions

View File

@ -48,20 +48,11 @@ Setting up the build
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 @@ Basic code required
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 @@ sets up some more boilerplate so that we don't have to write it ourselves.
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 @@ tree) are still valid after this pass since we didn't modify any functions.
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 @@ to add it to a couple places. Add the following to
... 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 a pass
--------------
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{{$}}

View File

@ -15,7 +15,6 @@ add_llvm_component_library(LLVMPasses
Analysis
Core
Coroutines
HelloNew
IPO
InstCombine
ObjCARC

View File

@ -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"

View File

@ -6,7 +6,6 @@ add_subdirectory(Scalar)
add_subdirectory(IPO)
add_subdirectory(Vectorize)
add_subdirectory(Hello)
add_subdirectory(HelloNew)
add_subdirectory(ObjCARC)
add_subdirectory(Coroutines)
add_subdirectory(CFGuard)

View File

@ -1,10 +0,0 @@
add_llvm_component_library(LLVMHelloNew
HelloWorld.cpp
DEPENDS
intrinsics_gen
LINK_COMPONENTS
Core
Support
)

View File

@ -27,6 +27,7 @@ add_llvm_component_library(LLVMTransformUtils
FunctionImportUtils.cpp
GlobalStatus.cpp
GuardUtils.cpp
HelloWorld.cpp
InlineFunction.cpp
InjectTLIMappings.cpp
InstructionNamer.cpp

View File

@ -6,7 +6,7 @@
//
//===----------------------------------------------------------------------===//
#include "llvm/Transforms/HelloNew/HelloWorld.h"
#include "llvm/Transforms/Utils/HelloWorld.h"
using namespace llvm;

View File

@ -8,7 +8,6 @@ static_library("Passes") {
"//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",

View File

@ -1,9 +0,0 @@
static_library("HelloNew") {
output_name = "LLVMHelloNew"
deps = [
"//llvm/lib/Analysis",
"//llvm/lib/IR",
"//llvm/lib/Support",
]
sources = [ "HelloWorld.cpp" ]
}

View File

@ -34,6 +34,7 @@ static_library("Utils") {
"FunctionImportUtils.cpp",
"GlobalStatus.cpp",
"GuardUtils.cpp",
"HelloWorld.cpp",
"InjectTLIMappings.cpp",
"InlineFunction.cpp",
"InstructionNamer.cpp",