diff options
| author | Michael Kuperstein <mkuper@google.com> | 2016-06-24 20:13:42 +0000 |
|---|---|---|
| committer | Michael Kuperstein <mkuper@google.com> | 2016-06-24 20:13:42 +0000 |
| commit | 82d5da5aac4ad77978326ba1c19966e224a5f700 (patch) | |
| tree | a039dee28373eea93ce21b3a7455ff841b409b3d | |
| parent | 3b3e954ea2a48d0d466dec383f6bfa40a90dd0e1 (diff) | |
| download | bcm5719-llvm-82d5da5aac4ad77978326ba1c19966e224a5f700.tar.gz bcm5719-llvm-82d5da5aac4ad77978326ba1c19966e224a5f700.zip | |
[PM] Port PreISelIntrinsicLowering to the new PM
llvm-svn: 273713
| -rw-r--r-- | llvm/include/llvm/CodeGen/PreISelIntrinsicLowering.h | 26 | ||||
| -rw-r--r-- | llvm/include/llvm/InitializePasses.h | 2 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/CodeGen.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp | 31 | ||||
| -rw-r--r-- | llvm/lib/Passes/PassBuilder.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/Passes/PassRegistry.def | 1 | ||||
| -rw-r--r-- | llvm/test/Transforms/PreISelIntrinsicLowering/load-relative.ll | 1 | ||||
| -rw-r--r-- | llvm/tools/opt/opt.cpp | 2 |
8 files changed, 52 insertions, 14 deletions
diff --git a/llvm/include/llvm/CodeGen/PreISelIntrinsicLowering.h b/llvm/include/llvm/CodeGen/PreISelIntrinsicLowering.h new file mode 100644 index 00000000000..765ca085244 --- /dev/null +++ b/llvm/include/llvm/CodeGen/PreISelIntrinsicLowering.h @@ -0,0 +1,26 @@ +//===--- PreISelIntrinsicLowering.h - Pre-ISel intrinsic lowering pass ----===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This pass implements IR lowering for the llvm.load.relative intrinsic. +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_CODEGEN_PREISELINTRINSICLOWERING_H +#define LLVM_CODEGEN_PREISELINTRINSICLOWERING_H + +#include "llvm/IR/PassManager.h" + +namespace llvm { + +struct PreISelIntrinsicLoweringPass + : PassInfoMixin<PreISelIntrinsicLoweringPass> { + PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); +}; +} + +#endif // LLVM_CODEGEN_PREISELINTRINSICLOWERING_H diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h index fe4b9bd9ce9..5d34f40c750 100644 --- a/llvm/include/llvm/InitializePasses.h +++ b/llvm/include/llvm/InitializePasses.h @@ -261,7 +261,7 @@ void initializePostMachineSchedulerPass(PassRegistry&); void initializePostOrderFunctionAttrsLegacyPassPass(PassRegistry&); void initializePostRAHazardRecognizerPass(PassRegistry&); void initializePostRASchedulerPass(PassRegistry&); -void initializePreISelIntrinsicLoweringPass(PassRegistry&); +void initializePreISelIntrinsicLoweringLegacyPassPass(PassRegistry&); void initializePrintBasicBlockPassPass(PassRegistry&); void initializePrintFunctionPassWrapperPass(PassRegistry&); void initializePrintModulePassWrapperPass(PassRegistry&); diff --git a/llvm/lib/CodeGen/CodeGen.cpp b/llvm/lib/CodeGen/CodeGen.cpp index dc19013be94..bea1bbe0dac 100644 --- a/llvm/lib/CodeGen/CodeGen.cpp +++ b/llvm/lib/CodeGen/CodeGen.cpp @@ -65,7 +65,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) { initializePostMachineSchedulerPass(Registry); initializePostRAHazardRecognizerPass(Registry); initializePostRASchedulerPass(Registry); - initializePreISelIntrinsicLoweringPass(Registry); + initializePreISelIntrinsicLoweringLegacyPassPass(Registry); initializeProcessImplicitDefsPass(Registry); initializeRegisterCoalescerPass(Registry); initializeRenameIndependentSubregsPass(Registry); diff --git a/llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp b/llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp index a1ff231412d..fbc2bc64f42 100644 --- a/llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp +++ b/llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp @@ -11,6 +11,7 @@ // //===----------------------------------------------------------------------===// +#include "llvm/CodeGen/PreISelIntrinsicLowering.h" #include "llvm/CodeGen/Passes.h" #include "llvm/IR/Function.h" #include "llvm/IR/IRBuilder.h" @@ -63,23 +64,31 @@ bool lowerIntrinsics(Module &M) { return Changed; } -class PreISelIntrinsicLowering : public ModulePass { +class PreISelIntrinsicLoweringLegacyPass : public ModulePass { public: static char ID; - PreISelIntrinsicLowering() : ModulePass(ID) {} + PreISelIntrinsicLoweringLegacyPass() : ModulePass(ID) {} - bool runOnModule(Module &M) { - return lowerIntrinsics(M); - } + bool runOnModule(Module &M) { return lowerIntrinsics(M); } }; -char PreISelIntrinsicLowering::ID; - +char PreISelIntrinsicLoweringLegacyPass::ID; } -INITIALIZE_PASS(PreISelIntrinsicLowering, "pre-isel-intrinsic-lowering", - "Pre-ISel Intrinsic Lowering", false, false) +INITIALIZE_PASS(PreISelIntrinsicLoweringLegacyPass, + "pre-isel-intrinsic-lowering", "Pre-ISel Intrinsic Lowering", + false, false) + +namespace llvm { +ModulePass *createPreISelIntrinsicLoweringPass() { + return new PreISelIntrinsicLoweringLegacyPass; +} -ModulePass *llvm::createPreISelIntrinsicLoweringPass() { - return new PreISelIntrinsicLowering; +PreservedAnalyses PreISelIntrinsicLoweringPass::run(Module &M, + ModuleAnalysisManager &AM) { + if (!lowerIntrinsics(M)) + return PreservedAnalyses::all(); + else + return PreservedAnalyses::none(); } +} // End llvm namespace diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index 5a5b49af2f4..c372b5a378a 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -44,6 +44,7 @@ #include "llvm/Analysis/TargetLibraryInfo.h" #include "llvm/Analysis/TargetTransformInfo.h" #include "llvm/Analysis/TypeBasedAliasAnalysis.h" +#include "llvm/CodeGen/PreISelIntrinsicLowering.h" #include "llvm/IR/Dominators.h" #include "llvm/IR/IRPrintingPasses.h" #include "llvm/IR/PassManager.h" diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def index 18b50ddcc20..c1e1e59ae82 100644 --- a/llvm/lib/Passes/PassRegistry.def +++ b/llvm/lib/Passes/PassRegistry.def @@ -53,6 +53,7 @@ MODULE_PASS("no-op-module", NoOpModulePass()) MODULE_PASS("pgo-icall-prom", PGOIndirectCallPromotion()) MODULE_PASS("pgo-instr-gen", PGOInstrumentationGen()) MODULE_PASS("pgo-instr-use", PGOInstrumentationUse()) +MODULE_PASS("pre-isel-intrinsic-lowering", PreISelIntrinsicLoweringPass()) MODULE_PASS("print-profile-summary", ProfileSummaryPrinterPass(dbgs())) MODULE_PASS("print-callgraph", CallGraphPrinterPass(dbgs())) MODULE_PASS("print", PrintModulePass(dbgs())) diff --git a/llvm/test/Transforms/PreISelIntrinsicLowering/load-relative.ll b/llvm/test/Transforms/PreISelIntrinsicLowering/load-relative.ll index 56bedd9b101..43cb0cc5a1d 100644 --- a/llvm/test/Transforms/PreISelIntrinsicLowering/load-relative.ll +++ b/llvm/test/Transforms/PreISelIntrinsicLowering/load-relative.ll @@ -1,4 +1,5 @@ ; RUN: opt -pre-isel-intrinsic-lowering -S -o - %s | FileCheck %s +; RUN: opt -passes='pre-isel-intrinsic-lowering' -S -o - %s | FileCheck %s ; CHECK: define i8* @foo32(i8* [[P:%.*]], i32 [[O:%.*]]) define i8* @foo32(i8* %p, i32 %o) { diff --git a/llvm/tools/opt/opt.cpp b/llvm/tools/opt/opt.cpp index def3f42f2d3..889cbb965ef 100644 --- a/llvm/tools/opt/opt.cpp +++ b/llvm/tools/opt/opt.cpp @@ -361,7 +361,7 @@ int main(int argc, char **argv) { initializeDwarfEHPreparePass(Registry); initializeSafeStackPass(Registry); initializeSjLjEHPreparePass(Registry); - initializePreISelIntrinsicLoweringPass(Registry); + initializePreISelIntrinsicLoweringLegacyPassPass(Registry); initializeGlobalMergePass(Registry); initializeInterleavedAccessPass(Registry); |

