Skip to content

Commit 07c3871

Browse files
committed
[CodeGen] Port SelectOptimize to new pass manager
1 parent d1a83ff commit 07c3871

File tree

11 files changed

+171
-63
lines changed

11 files changed

+171
-63
lines changed

llvm/include/llvm/CodeGen/CodeGenPassBuilder.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "llvm/ADT/StringRef.h"
2020
#include "llvm/Analysis/AliasAnalysis.h"
2121
#include "llvm/Analysis/BasicAliasAnalysis.h"
22+
#include "llvm/Analysis/ProfileSummaryInfo.h"
2223
#include "llvm/Analysis/ScopedNoAliasAA.h"
2324
#include "llvm/Analysis/TargetTransformInfo.h"
2425
#include "llvm/Analysis/TypeBasedAliasAnalysis.h"
@@ -30,6 +31,7 @@
3031
#include "llvm/CodeGen/PreISelIntrinsicLowering.h"
3132
#include "llvm/CodeGen/ReplaceWithVeclib.h"
3233
#include "llvm/CodeGen/SafeStack.h"
34+
#include "llvm/CodeGen/SelectOptimize.h"
3335
#include "llvm/CodeGen/UnreachableBlockElim.h"
3436
#include "llvm/CodeGen/WasmEHPrepare.h"
3537
#include "llvm/CodeGen/WinEHPrepare.h"
@@ -469,6 +471,8 @@ Error CodeGenPassBuilder<Derived>::buildPipeline(
469471
raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut,
470472
CodeGenFileType FileType) const {
471473
AddIRPass addIRPass(MPM, Opt.DebugPM);
474+
// `ProfileSummaryInfo` is always valid.
475+
addIRPass(RequireAnalysisPass<ProfileSummaryAnalysis, Module>());
472476
addISelPasses(addIRPass);
473477

474478
AddMachinePass addPass(MFPM);
@@ -656,7 +660,7 @@ void CodeGenPassBuilder<Derived>::addIRPasses(AddIRPass &addPass) const {
656660

657661
// Convert conditional moves to conditional jumps when profitable.
658662
if (getOptLevel() != CodeGenOptLevel::None && !Opt.DisableSelectOptimize)
659-
addPass(SelectOptimizePass());
663+
addPass(SelectOptimizePass(&TM));
660664
}
661665

662666
/// Turn exception handling constructs into something the code generators can

llvm/include/llvm/CodeGen/MachinePassRegistry.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ FUNCTION_PASS("post-inline-ee-instrument", EntryExitInstrumenterPass, (true))
5353
FUNCTION_PASS("replace-with-veclib", ReplaceWithVeclib, ())
5454
FUNCTION_PASS("safe-stack", SafeStackPass, (TM))
5555
FUNCTION_PASS("scalarize-masked-mem-intrin", ScalarizeMaskedMemIntrinPass, ())
56+
FUNCTION_PASS("select-optimize", SelectOptimizePass, (TM))
5657
FUNCTION_PASS("tlshoist", TLSVariableHoistPass, ())
5758
FUNCTION_PASS("unreachableblockelim", UnreachableBlockElimPass, ())
5859
FUNCTION_PASS("verify", VerifierPass, ())
@@ -128,7 +129,6 @@ DUMMY_FUNCTION_PASS("expandmemcmp", ExpandMemCmpPass, ())
128129
DUMMY_FUNCTION_PASS("gc-info-printer", GCInfoPrinterPass, ())
129130
DUMMY_FUNCTION_PASS("gc-lowering", GCLoweringPass, ())
130131
DUMMY_FUNCTION_PASS("indirectbr-expand", IndirectBrExpandPass, ())
131-
DUMMY_FUNCTION_PASS("select-optimize", SelectOptimizePass, ())
132132
DUMMY_FUNCTION_PASS("shadow-stack-gc-lowering", ShadowStackGCLoweringPass, ())
133133
DUMMY_FUNCTION_PASS("sjljehprepare", SjLjEHPreparePass, ())
134134
DUMMY_FUNCTION_PASS("stack-protector", StackProtectorPass, ())
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//===--- llvm/CodeGen/SelectOptimize.h ---------------------------*- C++ -*-==//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
///
9+
/// \file
10+
/// This file contains the declaration of the SelectOptimizePass class,
11+
/// its corresponding pass name is `select-optimize`.
12+
///
13+
//===----------------------------------------------------------------------===//
14+
15+
#ifndef LLVM_CODEGEN_SELECTOPTIMIZE_H
16+
#define LLVM_CODEGEN_SELECTOPTIMIZE_H
17+
18+
#include "llvm/IR/PassManager.h"
19+
20+
namespace llvm {
21+
22+
class TargetMachine;
23+
24+
class SelectOptimizePass : public PassInfoMixin<SelectOptimizePass> {
25+
const TargetMachine *TM;
26+
27+
public:
28+
explicit SelectOptimizePass(const TargetMachine *TM) : TM(TM) {}
29+
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
30+
};
31+
32+
} // namespace llvm
33+
34+
#endif // LLVM_CODEGEN_SELECTOPTIMIZE_H

0 commit comments

Comments
 (0)