LLVM 20.0.0git
SCCP.h
Go to the documentation of this file.
1//===- SCCP.h - Sparse Conditional Constant Propagation ---------*- 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// This pass implements interprocedural sparse conditional constant
10// propagation and merging.
11//
12// Specifically, this:
13// * Assumes values are constant unless proven otherwise
14// * Assumes BasicBlocks are dead unless proven otherwise
15// * Proves values to be constant, and replaces them with constants
16// * Proves conditional branches to be unconditional
17//
18//===----------------------------------------------------------------------===//
19
20#ifndef LLVM_TRANSFORMS_IPO_SCCP_H
21#define LLVM_TRANSFORMS_IPO_SCCP_H
22
23#include "llvm/IR/PassManager.h"
24
25namespace llvm {
26
27class Module;
28
29/// A set of parameters to control various transforms performed by IPSCCP pass.
30/// Each of the boolean parameters can be set to:
31/// true - enabling the transformation.
32/// false - disabling the transformation.
33/// Intended use is to create a default object, modify parameters with
34/// additional setters and then pass it to IPSCCP.
37
39
40 /// Enables or disables Specialization of Functions.
41 IPSCCPOptions &setFuncSpec(bool FuncSpec) {
42 AllowFuncSpec = FuncSpec;
43 return *this;
44 }
45};
46
47/// Pass to perform interprocedural constant propagation.
48class IPSCCPPass : public PassInfoMixin<IPSCCPPass> {
49 IPSCCPOptions Options;
50
51public:
52 IPSCCPPass() = default;
53
54 IPSCCPPass(IPSCCPOptions Options) : Options(Options) {}
55
57
58 bool isFuncSpecEnabled() const { return Options.AllowFuncSpec; }
59};
60
61} // end namespace llvm
62
63#endif // LLVM_TRANSFORMS_IPO_SCCP_H
Machine Check Debug Module
This header defines various interfaces for pass management in LLVM.
A container for analyses that lazily runs them and caches their results.
Definition: PassManager.h:253
Pass to perform interprocedural constant propagation.
Definition: SCCP.h:48
bool isFuncSpecEnabled() const
Definition: SCCP.h:58
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
Definition: SCCP.cpp:383
IPSCCPPass(IPSCCPOptions Options)
Definition: SCCP.h:54
IPSCCPPass()=default
A Module instance is used to store all the information related to an LLVM module.
Definition: Module.h:65
A set of analyses that are preserved following a run of a transformation pass.
Definition: Analysis.h:111
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
A set of parameters to control various transforms performed by IPSCCP pass.
Definition: SCCP.h:35
IPSCCPOptions(bool AllowFuncSpec=true)
Definition: SCCP.h:38
bool AllowFuncSpec
Definition: SCCP.h:36
IPSCCPOptions & setFuncSpec(bool FuncSpec)
Enables or disables Specialization of Functions.
Definition: SCCP.h:41
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition: PassManager.h:69